38926

38926



46


ROZDZIAŁ 8. OPERATORY

post-inkrcmentacja (“i++”), pre-dekrementacja (“-i”) i post-dekrementacja (“i-”).

Operatory inkrementacji zwiększa, a dckrenientacji zmniejsza argmnent o jeden. Ponadto operatory pro- zwracają nową wartość argument u. natomiast post- starą wartość argumentu.

int a, b, c; a - 3;

b • a—; /* po operacji b-3 a=2 */ c * —b; /* po operacji b-2 c»2 ♦/

Czasami (szczególnie w C-f+) użycie operatorów stawianych za argumentem jest nieco mniej efektywne (lx> kompilator musi stworzyć nową zmienną by przechować wartość tymczasową).

Bardzo ważne jest, abyśmy poprawnie stosowali operatory dekrementacji i inkre-mentacji. Chodzi o to, aby w jednej instrukcji nie umieszczać kilku operatorów, które modyfikują ten sam obiekt (zmienną). Jeżeli taka sytuacja zaistnieje, to efekt działania instrukcji jest nieokreślony. Prostym przykładem mogą być następujące instrukcje:

int a-l; a - a++; a - ++a; a - a++ + ++a;

printf ("‘/A ł£d\n", ++a, ++a) ; printf("7/i %d\n", a++, a++);

Kompilator GCC potrafi ostrzegać przed takimi błędami - aby to czynił należy podać mu jako argument opcję -Wsequence-point.


Operacje bitowe

Oprócz operacji znanych z lekcji matematyki w podstawówce, język C został wyposażony także w operatory bitowe, zdefiniowane dla liczb całkowitych. Są to:

•    negacja bitowa (“ ”),

•    koniunkcja bitowa (“&”),

•    alternatywa bitowa (“—*') i

•    alternatywa rozłączna (XOR) (i''”).

Działają one na poszczególnych bitach przez co mogą być szybsze od innych operacji. Działanie tych operatorów można zdefiniować za pomocą poniższych tał)cl:



Wyszukiwarka

Podobne podstrony:
46 ROZDZUŁ 8. OPERATORY •    post - i nkrementacja (“i+4-”), •
40173 str163 & otatnik " Si C:Document... " ^ 1028.O.S.T.“ ,r^Strl62-Paint ” f Itelix
F00574 001 u001 Post-test probability __prę x sens_ of disease - (pre x sens) + ((1 - sens) x (1 - s
grupaA1 MS ~ > r 2
IMAG0460
IMG(12 /,    w m aj***“i    M<pu. frufVi^ “*p^    
str162 & otatnik " Si C:Document... " ^ 1028.O.S.T.“ ’rlS StM61 -Paint ” f ItelixiLib
str163 & otatnik " Si C:Document... " ^ 1028.O.S.T.“ ,r^Strl62-Paint ” f ItelixiLibra
skanuj0007 si-    y^».>    ^ ^ 3)- 1,7S 10-“ 2 f*w OW
uvs100913 011
16731 str162 & otatnik " Si C:Document... " ^ 1028.O.S.T.“ ’rlS StM61 -Paint ” f Itel
IMG50 V O.    teov-t,Vau^. Si H -O O&U - o.S e.fe=o ^■Mb-0 ==s
mmmmmii mmiminjim mnnntmnm n ; -M ♦] •i i : i i U ■ : 1 Si li gj0 p
CStt CSH T510OOg 05« © S «C503_,QOq Q!!»W T3B7 CS3 --Si*c5gr o“ ^ csX IC505 .f V

więcej podobnych podstron