np. b+= a++ + b||c - d>>2 & a ^d; Poziomy hierarchii: 1. () [] -> - () - przy funkcjach, oraz (a+b)/c, [] - przy tablicach, -> - przy strukturach i klasach 2. ! ~ ++ -- + - * & (typ) sizeof <==PRAWOSTRONNE tzn. operator--zmienna a=0 !a=1 a=3 !a=0 ! - negacja logiczna !(prawda)=fałsz prawda - kiedy liczba różna od 0 fałsz - kiedy liczba = 0 ~ - negacja bitowa a=3 ... 0000 0011 ~a=fffffffc ... 1111 1100
++ --
+ np. +a, +4 <== jednoargumentowy - np. -a, -4 <== jednoargumentowy
* & - przy wskaźnikach, np. *a, **a, ***a, &a
(typ) - operator konwersji sizeof 3. * / % - mnożenie, dzielenie, reszta z dzielenia <==== DWURAGUMENTOWE, np. a * 5 , b % d / - dzielenie: 17 / 3 = 5 int / int -> int 17 / 3.0 = 5.66667 int / float ->float 17.0 / 3 = 5.6667 float / int -> float 4. + - <- dodawanie, odejmowanie <==== DWURAGUMENTOWE, 5. << >> <=== przesunięcia bitowe, np. a >> 2 - przesunięcie wprawo a o 2 bity 6. < <= > >= <== operatory relacji (porównań) WYNIK: wartość logiczna 7. == != <== czy równe, czy nierówne 8. & -bitowe AND ( I ) <==== DWURAGUMENTOWY, np. a & b 9. ^ -bitowe XOR ( suma modulo 2 ) <==== DWURAGUMENTOWY, np. a ^ b 10. | -bitowe OR( LUB ) <==== DWURAGUMENTOWY, np. a | b 11. && -LOGICZNE AND ( I ) <==== DWURAGUMENTOWY, np. a && b 12. || -lOGICZNE OR( LUB ) <==== DWURAGUMENTOWY, np. a || b 13. ?: np. a>b ? 3 : -7 <== jeżeli warunek: a>b jest prawdziwy to wynikiem operatora jest 3 (przed :), jeżeli nie - -7 (po :). 14. = += -= *= /= %= ^= |= &= <<= >>= np. a+=2; <== to samo co a=a+2; <== operatory przypisania 15. , np. a=3, b=6, c=8; <== jedna instrukcja 16. ++ -- <== postinkrementacja, postdekrementacja
Przykładowe zadanie do wprawek - analiza "na sucho":
int a=4, b=044, c=0xa1, d=9; float k=1.5, f=22.33;