logo

Operatory


Ze zmiennych, stałych i literałów, posługując się operatorami języka i nawiasami, możemy konstruować wyrażenia. Wyrażenia są obliczane, a ich wyniki mogą być w różny sposób wykorzystane. Kolejność obliczeń zależy od priorytetów i wiązań (łączność) operatorów użytych w wyrażeniach. Priorytety mówią o tym, w jakiej kolejności będą wykonane różne operacje zawarte w tym samym wyrażeniu. Wiązania określają kolejność wykonania operacji o tym samym priorytecie, tzn. czy operacje te są wykonywane od lewej strony wyrażenia czy od prawej.

operatory


Priorytety
priorytety

Operatory arytmetyczne

Są to operatory wykonujące znane wszystkim dodawanie,odejmowanie itp.:

OperatorZnaczenie
+dodawanie
-odejmowanie
*mnożenie
/dzielenie
%dzielenie modulo - daje w wyniku samą resztę z dzielenia
=operator przypisania - wykonuje działanie po prawej stronie i wynik przypisuje obiektowi po lewej


Operatory logiczne

Służą porównaniu zawartości dwóch zmiennych według określonych kryteriów:

Operator Rodzaj porównania
== czy równe
> większy
>= większy bądź równy
< mniejszy
<= mniejszy bądź równy
!= czy różny(nierówny)

Są jeszcze operatory, służące do grupowania porównań:

|| lub(OR)
&& i,oraz(AND)
! negacja(NOT)


Operatory binarne

Są to operatory, które działają na bitach.
operator funkcja przykład
| suma bitowa(OR) 5 | 2 da w wyniku 7 ( 00000101 OR 00000010 = 00000111)
& iloczyn bitowy 7 & 2 da w wyniku 2 ( 00000111 AND 00000010 = 00000010)
~ negacja bitowa ~2 da w wyniku 253 ( NOT 00000010 = 11111101 )
>> przesunięcie bitów o X w prawo 7 >> 2 da w wyniku 1 ( 00000111 >> 2 = 00000001)
<< przesunięcie bitów o X w lewo 7 << 2 da w wyniku 28 ( 00000111 << 2 = 00011100)
^ alternatywa wyłączna 7 ^ 2 da w wyniku 5 ( 00000111 ^ 00000010 = 00000101)


Operatory inkrementacji/dekrementacji

Służą do dodawania/odejmowania od liczby wartości jeden.

Przykłady:

Operacja Opis operacji Wartość wyrażenia
x++ zwiększy wartość w x o jeden wartość zmiennej x przed zmianą
++x zwiększy wartość w x o jeden wartość zmiennej x powiększona o jeden
x-- zmniejszy wartość w x o jeden wartość zmiennej x przed zmianą
--x zmniejszy wartość w x o jeden wartość zmiennej x pomniejszona o jeden

Parę przykładów dla zrozumienia:

int a=7;
if ((a++)==7) /* najpierw porównuje, potem dodaje */ 
  printf ("%d\n",a); /* wypisze 8 */
if ((++a)==9) /* najpierw dodaje, potem porównuje */
  printf ("%d\n", a); /* wypisze 9 */

Analogicznie ma się sytuacja z operatorami dekrementacji.

Pozostałe

Operacja Opis operacji Wartość wyrażenia
*x operator wyłuskania dla wskaźnika wartość trzymana w pamięci pod adresem przechowywanym we wskaźniku
&x operator pobrania adresu zwraca adres zmiennej
x[a] operator wybrania elementu tablicy zwraca element tablicy o indeksie a (numerowanym od zera)
x.a operator wyboru składnika a ze zmiennej x wybiera składnik ze struktury lub unii
x->a operator wyboru składnika a przez wskaźnik do zmiennej x wybiera składnik ze struktury gdy używamy wskaźnika do struktury zamiast zwykłej zmiennej
sizeof(typ) operator pobrania rozmiaru typu zwraca rozmiar typu w bajtach

Operator ternarny

Istnieje jeden operator przyjmujący trzy argumenty - jest to operator wyrażenia warunkowego: a ? b : c. Zwraca on b gdy a jest prawdą lub c w przeciwnym wypadku.

logo