Operátory

Proměnné a datové typy

SSŠVT


Operátory

Arita operátorů

Operátory jsou speciálním případem funkcí. Funkce má nějaké vstupní parametry (argumenty) a výstupní hodnotu.

Podle počtu argumentů dělíme operátory na:

Unární operátory
Mají pouze jeden argument (např. unární + nebo unární -, kdy říkáme, zda číslo je kladné nebo záporné: +3 (plus tři), -1.5 (minus jedna celá pět) apod.).
Binární operátory
Mají dva argumenty, jsou nejběžnějším typem operátorů (například + pro sčítání, - pro odčítání, * pro násobení: 2 + 4 (dva plus čtyři), 5.2 - 1.2 (pět celých dva minus jedna celá dva), 6 * 4 (šest krát čtyři) apod.).
Ternární operátory
Mají tři argumenty (např. podmíněný operátor ?:, který se používá třeba takto: a < 5 ? "je menší" : "je větší nebo rovno").

Pozn.:
Argumentům operátorů někdy říkáme též operandy.


Aritmetické operátory

Aritmetické operátory jsou nejběžnější, většina z nich jsou binární, mají tedy dva argumenty.

Operátor Název Příklad Poznámka
+ Sčítání 5 + 3
- Odčítání 10 - 6
* Násobení 5.42 * 1.9
/ Dělení 7 / 2 Vydělíme-li celočíselně sedmičku dvěma, dostaneme tři, tj. 7 / 2 = 3
% Zbytek po dělení 7 % 2 Zbytek po vydělení sedmičky dvěma je jedna, tj. 7 % 2 = 1
++ Increment i++ Zvětší hodnotu uloženou v proměnné i o 1
-- Decrement j-- Zmenší hodnotu v proměnné j o 1

Přiřazovací operátory

Přiřazovací operátory v první řadě zařídí, že se do proměnné uloží nějaká hodnota.

Operátor Název Příklad Poznámka
= Přiřazení a = 10 Do proměnné a se uloží hodnota 10
+= Přiřazení s přičtením a += 3 a = a + 3, tj. vezmu hodnotu proměnné a, přičtu k ní 3 a výsledek uložím zpět do proměnné a
-= Přiřazení s odečtením x -= b x = x - b
*= Přiřazení s násobením a *= 2 Hodnota v proměnné a se zdvojnásobí
/= Přiřazení s dělením x /= (y - 0.1) x = x / (y - 0.1)
%= Přiřazení po vypočtení zbytku x %= 3 x = x % 3
&= Přiřazení s bitovou operací AND num &= 0b00001100 num = num & 0b00001100
|= Přiřazení s bitovou operací OR num |= 0b1010010101011010 num = num | 0b1010010101011010
^= Přiřazení s bitovou operací XOR num ^= 0b11111111 num = num ^ 0b11111111
>>= Přiřazení s bitovým shiftem vpravo num >>= 5 num = num >> 5, tj. posune bity v proměnné num o 5 pozic doprava, zleva se doplňí znaménkový bit
<<= Přiřazení s bitovým shiftem vlevo num << = 3 num = num << 3, tj. posune bity v proměnné num o 3 pozice doleva, zprava se doplňují nuly

Operátory porovnání

Pro porovnání dvou hodnot, výsledkem je logická hodnota true, nebo false.

Operátor Název Příklad Poznámka
== Je rovno x == y Výsledek je true, je-li hodnota x rovna hodnotě y, a false, je-li hodnota x různá od hodnoty y
!= Není rovno x != y Výsledek je true, je-li hodnota x různá od hodnoty y, a false, jsou-li hodnoty stejné
> Větší než x > y Je-li x větší než y, výsledek je true, je-li x menší nebo rovno než y, výsledek je false
< Menší než x < y
>= Větší nebo rovno x >= y
<= Menší nebo rovno x <= y

Logické operátory

Pro zkombinování dvou logických hodnot (dvou podmínek), případně pro negaci logické hodnoty (obrácení podmínky). Výsledkem je logická hodnota.

Operátor Název Příklad Poznámka
&& Logické "a" condition1 && condition2 Výsledkem logického výrazu (a > 3) && (b < 0) je true, pokud jsou splněny obě podmínky (a je větší než 3 a zároveň b je menší než 0), jinak false
|| Logické "nebo" condition1 || condition2 Výsledkem logického výrazu "Ahoj".Contains("ho") || y == 4 je true, pokud je splněna aspoň jedna z podmínek (řetězec "Ahoj" obsahuje podřetězec "ho", nebo hodnota proměnné y je rovna 4), případně obě dvě, jinak je výsledek false
! Logické "ne" (negace) !condition Výsledkem logického výrazu !((new List<int> { 4, 6, 8 }).IndexOf(6) >= 0) je true, pokud původní logický výraz (podmínka (new List<int> { 4, 6, 8 }).IndexOf(6) >= 0, tj. test, zda 6 je obsaženo v daném seznamu čísel) je nepravdivý, a naopak je false, pokud původní výraz je pravdivý

Bitové operátory

Bitové operátory provádějí u celočíselných typů logické (booleovské) operace bit po bitu.

U binárních operací AND, OR a XOR (logický součin, součet a výhradní součet) tedy:

Operátor Název Příklad Poznámka
~ Bitový doplněk ~(0b01001001) Výsledkem ~(0b01001001) je 0b10110110.
Jedná se o unární operátor, neguje (invertuje) jednotlivé bity v binární reprezentaci čísla.
Pravdivostní tabulka:
x~x
01
10
& Bitová operace AND 0b01001001 & 0b00011101 Výsledkem 0b01001001 & 0b00011101 je 0b00001001.
Binární operátor, logické "násobení":
xyx & y
000
010
100
111
| Bitová operace OR 0b01001001 | 0b00011101 Výsledkem 0b01001001 | 0b00011101 je 0b01011101.
Binární operátor, logické "sčítání":
xyx | y
000
011
101
111
^ Bitová operace XOR 0b01001001 ^ 0b00011101 Výsledkem 0b01001001 ^ 0b00011101 je 0b01010100.
Binární operátor, logický "výhradní součet":
xyx ^ y
000
011
101
110

Lze číst též takto: Buď platí jedno, nebo druhé. Ne obojí naráz.
<< Bitový shift vlevo 0b01001001 << 3 Výsledkem 0b01001001 << 3 je 0b01001000.
Binární operátor, posune bity prvního operandu směrem doleva o počet pozic daný druhým operandem, zprava "doplňuje" nuly.
>> Bitový shift vpravo 0b01001001 >> 2
0b10110110 >> 2
Výsledkem 0b01001001 >> 2 je 0b00010010,
avšak výsledkem 0b10110110 >> 2 je 0b11101101.
Binární operátor, posune bity prvního operandu směrem doprava o počet pozic daný druhým operandem, zleva "doplňuje" 0 nebo 1 podle hodnoty původního nejvyššího (znaménkového) bitu.
>>> Bitový shift vpravo bez znaménka 0b01001001 >>> 2
0b10110110 >>> 2
Výsledkem 0b01001001 >>> 2 je 0b00010010,
a přitom výsledkem 0b10110110 >>> 2 je 0b00101101.
Binární operátor, posune bity prvního operandu směrem doprava o počet pozic daný druhým operandem, zleva "doplňuje" 0.