Jazyk C - operátory: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
d
 
(19 medziľahlých úprav od 3 ďalších používateľov nie je zobrazených)
Riadok 1: Riadok 1:
 
[[Kategória:Študijné materiály]]
 
[[Kategória:Študijné materiály]]
 
[[Kategória:Informatika]]
 
[[Kategória:Informatika]]
 +
__TOC__
 
Operátor je symbol, ktorý hovorí kompilátoru, aby vykonával konkrétne matematické alebo logické funkcie. <ref>https://www.tutorialspoint.com/cprogramming/c_operators.htm</ref> Jeho návratový typ určený podľa typu vstupných hodnôt.
 
Operátor je symbol, ktorý hovorí kompilátoru, aby vykonával konkrétne matematické alebo logické funkcie. <ref>https://www.tutorialspoint.com/cprogramming/c_operators.htm</ref> Jeho návratový typ určený podľa typu vstupných hodnôt.
 +
 +
Operátory sa dajú podľa počtu vstupov rozdeliť na unárne, binárne a ternárne.
 +
{| class="wikitable"
 +
! Unárne
 +
| ++, --, -(zmena znamienka), !, ~, sizeof
 +
|-
 +
! Binárne
 +
| <nowiki>+, -, *, /, %, &&, ||, <<, >>, &, |, ^, <, >, <=, >=, ==, !=, =</nowiki>
 +
|-
 +
! Ternárne
 +
| ? :
 +
|}
 +
 
{{Skripta_ZI}}
 
{{Skripta_ZI}}
  
 
==Aritmetické operátory==
 
==Aritmetické operátory==
  
===Sčítanie +===
+
;Sčítanie +: Tento operátor slúži na sčítanie dvoch celých alebo reálnych čísiel. Jeho návratová hodnota je súčet daných čísiel. Vyhodnocuje sa zľava doprava.
 
 
Tento operátor slúži na sčítanie dvoch celých alebo reálnych čísiel. Jeho návratová hodnota je súčet daných čísiel.
 
 
<source lang="c">x = A + B;</source>
 
<source lang="c">x = A + B;</source>
  
===Rozdiel -===
+
;Rozdiel: Tento operátor slúži na odčítanie dvoch celých alebo reálnych čísiel. Jeho návratová hodnota je rozdiel ľavého a pravého čísla. Vyhodnocuje sa zľava doprava.
 
 
Tento operátor slúži na odčítanie dvoch celých alebo reálnych čísiel. Jeho návratová hodnota je rozdiel ľavého a pravého čísla.
 
 
<source lang="c">x = A - B;</source>
 
<source lang="c">x = A - B;</source>
  
===Súčin *===
+
;Súčin *: Tento operátor slúži na násobenie dvoch celých alebo reálnych čísiel. Jeho návratová hodnota je súčin daných čísiel. Vyhodnocuje sa zľava doprava.
 
 
Tento operátor slúži na násobenie dvoch celých alebo reálnych čísiel. Jeho návratová hodnota je súčin daných čísiel.
 
 
<source lang="c">x = A * B;</source>
 
<source lang="c">x = A * B;</source>
  
===Podiel /===
+
;Podiel /: Tento operátor slúži na delenie dvoch celých alebo reálnych čísiel. Jeho návratová hodnota je podiel ľavého a pravého čísla. Vyhodnocuje sa zľava doprava.
 
 
Tento operátor slúži na delenie dvoch celých alebo reálnych čísiel. Jeho návratová hodnota je podiel ľavého a pravého čísla.
 
 
<source lang="c">x = A / B;</source>
 
<source lang="c">x = A / B;</source>
  
===Zvyšok po delení %===
+
;Zvyšok po delení %: Tento operátor slúži na vypočítanie celočíselného zvyšku po delení celých čísiel. Jeho návratová hodnota sa nazýva '''modulo'''. Vyhodnocuje sa zľava doprava.
 
 
Tento operátor slúži na vypočítanie celočíselného zvyšku po delení celých čísiel. Jeho návratová hodnota sa nazýva '''modulo'''.
 
 
<source lang="c">x = A * B;</source>
 
<source lang="c">x = A * B;</source>
  
===Zmena znamienka -===
+
;Zmena znamienka -: Tento operátor slúži na zmenu znamienka daného čísla. Jeho návratová hodnota je dané číslo krát -1.
 
 
Tento operátor slúži na zmenu znamienka daného čísla. Jeho návratová hodnota je dané číslo krát -1.
 
 
<source lang="c">
 
<source lang="c">
 
x = -A;
 
x = -A;
Riadok 39: Riadok 41:
 
</source>
 
</source>
  
===Inkrementácia ++===
+
;Inkrementácia ++: Tento unárny operátor slúži na zväčšenie daného čísla o 1.  
 
 
Tento operátor slúži na zväčšenie daného čísla o 1.  
 
 
<source lang="c">
 
<source lang="c">
A++; //hodnota A sa zväčší o 1
+
A++; //hodnota A sa zväčší o 1.
++A; //Hodnota A sa tiež zväčší o 1
+
++A; //Hodnota A sa tiež zväčší o 1.
  
 
vypis(A++); //zväčší hodnotu i o 1, ale vráti originálnu hodnotu, ktorú potom vypíše
 
vypis(A++); //zväčší hodnotu i o 1, ale vráti originálnu hodnotu, ktorú potom vypíše
Riadok 50: Riadok 50:
 
</source>
 
</source>
  
===Dekrementácia ++===
+
;Dekrementácia --: Tento unárny operátor slúži na zmenšenie daného čísla o 1.  
 
 
Tento operátor slúži na zmenšenie daného čísla o 1.  
 
 
<source lang="c">
 
<source lang="c">
A--; //hodnota A sa zmenší o 1
+
A--; //hodnota A sa zmenší o 1.
--A; //Hodnota A sa tiež zmenší o 1
+
--A; //Hodnota A sa tiež zmenší o 1.
  
 
vypis(A--); //zmenší hodnotu i o 1, ale vráti originálnu hodnotu, ktorú potom vypíše
 
vypis(A--); //zmenší hodnotu i o 1, ale vráti originálnu hodnotu, ktorú potom vypíše
 
vypis(--A); //najprv zmenší hodnotu i o 1, potom toto číslo vypíše
 
vypis(--A); //najprv zmenší hodnotu i o 1, potom toto číslo vypíše
 
</source>
 
</source>
 
  
 
==Logické operátory==
 
==Logické operátory==
  
===Logický súčin &&===
+
;Logický súčin &&: Tento operátor slúži na vypočítanie logického súčinu dvoch čísiel. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Vyhodnocuje sa zľava doprava.
 
 
Tento operátor slúži na vypočítanie logického súčinu dvoch čísiel. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''.
 
 
<source lang="c">x = A && B;</source>
 
<source lang="c">x = A && B;</source>
  
===Logický súčet ||===
+
;Logický súčet ||: Tento operátor slúži na vypočítanie logického súčtu dvoch čísiel. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Vyhodnocuje sa zľava doprava.
 
 
Tento operátor slúži na vypočítanie logického súčtu dvoch čísiel. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''.
 
 
<source lang="c">x = A || B;</source>
 
<source lang="c">x = A || B;</source>
  
===Negácia !===
+
;Negácia !: Tento operátor slúži na vypočítanie negácie jedného čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''.
 
 
Tento operátor slúži na vypočítanie negácie jedného čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''.
 
 
<source lang="c">x = !A;</source>
 
<source lang="c">x = !A;</source>
  
'''Poznámka:''' Vstupné hodnoty logických operátorov môžu byť len '''TRUE (1)''' alebo '''FALSE (0)''', avšak v jazyku C/C++ sú všetky hodnoty okrem 0 považované za '''TRUE'''.
+
;Poznámka: Vstupné hodnoty logických operátorov môžu byť len '''TRUE (1)''' alebo '''FALSE (0)''', avšak v jazyku C/C++ sú všetky hodnoty okrem 0 považované za '''TRUE'''.
 
 
  
 
==Bitové operátory==
 
==Bitové operátory==
  
===Bitový posun vľavo <<===
+
;Bitový posun vľavo <<: Tento operátor slúži na posunutie bitov jedného čísla vľavo o zadaný počet (chýbajúce bity sa nahradia 0). Rovnaký výsledok sa dá dosiahnuť aj násobením daného čísla násobkami 2 (napr. A << '''3''' = A * 2 * '''3'''). Vyhodnocuje sa zľava doprava.
 
 
Tento operátor slúži na posunutie bitov jedného čísla vľavo o zadaný počet (chýbajúce bity sa nahradia 0). Rovnaký výsledok sa dá dosiahnuť aj násobením daného čísla násobkami 2 (napr. A << '''3''' = A * 2 * '''3''').
 
 
<source lang="c">
 
<source lang="c">
 
//A = B00110101
 
//A = B00110101
Riadok 93: Riadok 81:
 
</source>
 
</source>
  
'''Poznámka:''' V jazyku C/C++ poznáme viac foriem zápisu čísiel, buď napíšeme číslo v dekadickej sústave napr. 125, alebo v binárnej sústave napr. B01111101, alebo v hexadecimálnej sústave napr. 0x7D.
+
;Poznámka: V jazyku C/C++ poznáme viac foriem zápisu čísiel, buď napíšeme číslo v dekadickej sústave napr. 125, alebo v binárnej sústave napr. B01111101, alebo v hexadecimálnej sústave napr. 0x7D.
  
===Bitový posun vpravo >>===
+
;Bitový posun vpravo >>: Tento operátor slúži na posunutie bitov jedného čísla vpravo o zadaný počet (chýbajúce bity sa nahradia 0). Rovnaký výsledok sa dá dosiahnuť aj delením daného čísla násobkami 2 (napr. A >> '''3''' = A /( 2 * '''3''')). Vyhodnocuje sa zľava doprava.
 
 
Tento operátor slúži na posunutie bitov jedného čísla vpravo o zadaný počet (chýbajúce bity sa nahradia 0). Rovnaký výsledok sa dá dosiahnuť aj delením daného čísla násobkami 2 (napr. A >> '''3''' = A /( 2 * '''3''')).
 
 
<source lang="c">
 
<source lang="c">
 
//A = B00110101
 
//A = B00110101
Riadok 104: Riadok 90:
 
</source>
 
</source>
  
===Bitový súčin &===
+
;Bitový súčin &: Tento operátor vypočíta logický súčin každého jedného bitu v čísle. Vyhodnocuje sa zľava doprava.
  
Tento operátor vypočíta logický súčin každého jedného bitu v čísle. Napr.:<source lang="c">
+
Napr.:<source lang="c">
 
  00110101
 
  00110101
 
&10100110
 
&10100110
Riadok 116: Riadok 102:
 
</source>
 
</source>
  
===Bitový súčet |===
+
;Bitový súčet |: Tento operátor vypočíta logický súčet každého jedného bitu v čísle. Vyhodnocuje sa zľava doprava.
  
Tento operátor vypočíta logický súčet každého jedného bitu v čísle. Napr.:<source lang="c">
+
Napr.:<source lang="c">
 
  00110101
 
  00110101
 
|10100110
 
|10100110
Riadok 128: Riadok 114:
 
</source>
 
</source>
  
===Bitový exkluzívny súčet ^===
+
;Bitový exkluzívny súčet ^:Tento operátor vypočíta exkluzívny súčet každého jedného bitu v čísle. Vyhodnocuje sa zľava doprava.
  
Tento operátor vypočíta exkluzívny súčet každého jedného bitu v čísle. Napr.:<source lang="c">
+
Napr.:<source lang="c">
 
  00110101
 
  00110101
 
^10100110
 
^10100110
Riadok 140: Riadok 126:
 
</source>
 
</source>
  
===Bitová negácia ~===
+
;Bitová negácia ~: Tento operátor vypočíta logická negáciu každého jedného bitu v čísle. Vyhodnocuje sa zľava doprava.
  
Tento operátor vypočíta logická negáciu každého jedného bitu v čísle. Napr.:<source lang="c">
+
Napr.:<source lang="c">
 
  00110101
 
  00110101
 
~
 
~
Riadok 151: Riadok 137:
 
x = ~A;
 
x = ~A;
 
</source>
 
</source>
 
  
 
==Relačné operátory==
 
==Relačné operátory==
  
===Menšie ako <===
+
;Menšie ako <: Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Ak je ľavé číslo menšie ako pravé, tak vráti '''TRUE''', inak '''FALSE'''. Vyhodnocuje sa zľava doprava.
 
 
Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Ak je ľavé číslo menšie ako pravé, tak vráti '''TRUE''', inak '''FALSE'''.
 
 
<source lang="c">A < B;</source>
 
<source lang="c">A < B;</source>
  
===Väčšie ako >===
+
;Väčšie ako >: Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Ak je ľavé číslo väčšie ako pravé, tak vráti '''TRUE''', inak '''FALSE'''. Vyhodnocuje sa zľava doprava.
 
 
Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Ak je ľavé číslo väčšie ako pravé, tak vráti '''TRUE''', inak '''FALSE'''.
 
 
<source lang="c">A > B;</source>
 
<source lang="c">A > B;</source>
  
===Menšie alebo rovné ako <= ===
+
;Menšie alebo rovné ako <=: Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Ak je ľavé číslo menšie alebo rovné ako pravé, tak vráti '''TRUE''', inak '''FALSE'''. Vyhodnocuje sa zľava doprava.
 
 
Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Ak je ľavé číslo menšie alebo rovné ako pravé, tak vráti '''TRUE''', inak '''FALSE'''.
 
 
<source lang="c">A <= B;</source>
 
<source lang="c">A <= B;</source>
  
===Väčšie alebo rovné ako >= ===
+
;Väčšie alebo rovné ako >=: Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Ak je ľavé číslo väčšie alebo rovné ako pravé, tak vráti '''TRUE''', inak '''FALSE'''. Vyhodnocuje sa zľava doprava.
 
 
Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Ak je ľavé číslo väčšie alebo rovné ako pravé, tak vráti '''TRUE''', inak '''FALSE'''.
 
 
<source lang="c">A >= B;</source>
 
<source lang="c">A >= B;</source>
  
===Rovná sa == ===
+
;Rovná sa ==: Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Ak je ľavé číslo rovnaké ako pravé, tak vráti '''TRUE''', inak '''FALSE'''. Vyhodnocuje sa zľava doprava.
 
 
Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Ak je ľavé číslo rovnaké ako pravé, tak vráti '''TRUE''', inak '''FALSE'''.
 
 
<source lang="c">A == B;</source>
 
<source lang="c">A == B;</source>
  
===Nerovná sa != ===
+
;Nerovná sa !=: Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Ak je ľavé číslo iné ako pravé, tak vráti '''TRUE''', inak '''FALSE'''. Vyhodnocuje sa zľava doprava.
 
 
Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len '''TRUE''' alebo '''FALSE'''. Ak je ľavé číslo iné ako pravé, tak vráti '''TRUE''', inak '''FALSE'''.
 
 
<source lang="c">A != B;</source>
 
<source lang="c">A != B;</source>
 
  
 
==Priraďovací operátor==
 
==Priraďovací operátor==
  
===Priradenie = ===
+
;Priradenie =: Operátor priradenia slúži na priradenie hodnoty do premennej. Môže byť použitý na akýkoľvek datový typ s jedinou podmienkou, že prvý parameter (ľava strana), musí byť prijímač hodnoty, napríklad premenná. v závislosti na programovací jazyk môžu byť rozdielne podmienky pre priradenie hodnoty do premenných, napríklad na základe závislosti na type.<ref>http://ctp.mkprog.eu/sk/c/priradenie/</ref> Priradenie, rovnako ako ostatné operátory, má taktiež návratovú hodnotu a ňou je hodnota, ktorá bola priradená. Vyhodnocuje sa sprava doľava.
 
 
Operátor priradenia slúži na priradenie hodnoty do premennej. Môže byť použitý na akýkoľvek datový typ s jedinou podmienkou, že prvý parameter (ľava strana), musí byť prijímač hodnoty, napríklad premenná. v závislosti na programovací jazyk môžu byť rozdielne podmienky pre priradenie hodnoty do premenných, napríklad na základe závislosti na type.<ref>http://ctp.mkprog.eu/sk/c/priradenie/</ref> Priradenie, rovnako ako ostatné operátory, má taktiež návratovú hodnotu a ňou je hodnota, ktorá bola priradená.
 
 
<source lang="c">A = B + 1</source>
 
<source lang="c">A = B + 1</source>
  
'''Poznámka:''' V jazyku C/C++ sa pri používaní operátorov postupuje podľa priority operátorov, inak sa zväčša postupuje zľava doprava, napr.: A = A + 5 + B * 6 bude vypočítané ako x = B * 6; y = 5 + x; A = A + y.
+
;Poznámka: V jazyku C/C++ sa pri používaní operátorov postupuje podľa priority operátorov, inak sa zväčša postupuje zľava doprava, napr.: A = A + 5 + B * 6 bude vypočítané ako x = B * 6; y = 5 + x; A = A + y.
 
 
===Operátor a následné priradenie===
 
  
Pre zjednodušenie programovania sa takmer všetky aritmetické a bitové operátory dajú nahradiť operátormi spojenými s priradením:
+
;Operátor a následné priradenie: Pre zjednodušenie programovania sa takmer všetky aritmetické a bitové operátory dajú nahradiť operátormi spojenými s priradením:
 
<source lang="c">
 
<source lang="c">
A = A + 2; ..... A += 2;
+
A = A + 2; //A += 2;
A = A - 2; ..... A -= 2;
+
A = A - 2; //A -= 2;
A = A * 2; ..... A *= 2;
+
A = A * 2; // A *= 2;
A = A / 2; ..... A /= 2;
+
A = A / 2; //A /= 2;
A = A % 2; ..... A %= 2;
+
A = A % 2; //A %= 2;
  
A = A << 2; .... A <<= 2;
+
A = A << 2; //A <<= 2;
A = A >> 2; .... A >>= 2;
+
A = A >> 2; //A >>= 2;
A = A & 2; ..... A &= 2;
+
A = A & 2; //A &= 2;
A = A | 2; ..... A |= 2;
+
A = A | 2; //A |= 2;
A = A ^ 2; ..... A ^= 2;
+
A = A ^ 2; //A ^= 2;
 
</source>
 
</source>
 +
Vyhodnocuje sa sprava doľava.
  
 +
==Miskuidné operátory==
  
==Miskuidné operátory==
+
;Veľkosť premennej sizeof(x): Tento operátor vráti počet bajtov, ktoré daný dátový typ zaberá v pamäti RAM.
  
===Veľkosť premennej sizeof(x)===
 
Tento operátor vráti počet bitov, ktoré daný dátový typ zaberá v pamäti RAM.
 
 
<source lang="c">
 
<source lang="c">
 
x = sizeof(int); //Zvyčajne vráti hodnotu 4 (závisí od architektúry procesora)
 
x = sizeof(int); //Zvyčajne vráti hodnotu 4 (závisí od architektúry procesora)
 
byte a;
 
byte a;
x = sizeof(a); //Vráti hodnotu 1, pretože byte zaberá iba jeden byte
+
x = sizeof(a); //Vráti hodnotu 1, pretože byte zaberá iba jeden bajt
 
byte b[5];
 
byte b[5];
x = sizeof(b); //Vráti hodnotu 5, pretože pole b zaberá 5 bytov
+
x = sizeof(b); //Vráti hodnotu 5, pretože pole b zaberá 5 bajtov
x = sizeof(b[0]); //Vráti hodnotu 1, pretože byte zaberá iba jeden byte
+
x = sizeof(b[0]); //Vráti hodnotu 1, pretože byte zaberá iba jeden bajt
 
</source>
 
</source>
  
===Podmienený operátor ? :===
+
'''Podmienený operátor ? :'''
 
Tento operátor najprv zistí, či podmienka pred ? platí. Ak áno, tak vráti hodnotu medzi ? a :, inak vráti hodnotu za : .
 
Tento operátor najprv zistí, či podmienka pred ? platí. Ak áno, tak vráti hodnotu medzi ? a :, inak vráti hodnotu za : .
 
<source lang="c">
 
<source lang="c">
Riadok 233: Riadok 201:
 
</source>
 
</source>
  
===Ostatné operátory===
+
'''Ostatné operátory'''
 
Poznáme ešte dva operátory: referenciu (&) a dereferenciu (*). Tieto operátory sú bližšie vysvetlené v sekii [[Jazyk C - smerník (pointer)]].
 
Poznáme ešte dva operátory: referenciu (&) a dereferenciu (*). Tieto operátory sú bližšie vysvetlené v sekii [[Jazyk C - smerník (pointer)]].
  
==Zdroje==
+
==Priorita operátorov==
 +
 
 +
Tabuľka nižšie zobrazuje prioritu operátorov a smer zápisu v jazyku C.
 +
{| class="wikitable"
 +
! Prednosť
 +
! Operátor
 +
! Popis
 +
! Zápis
 +
|-
 +
| rowspan="5" | 1
 +
| ''++ --''
 +
| Inkrementácia a dekrementácia - prípona
 +
| rowspan="5" | zľava doprava
 +
|-
 +
| ''()''
 +
| Volanie funkcie
 +
|-
 +
| ''[]''
 +
| Indexovanie poľa
 +
|-
 +
| ''.''
 +
| Prístup do štruktúry alebo do union
 +
|-
 +
| ''->''
 +
| Prístup do štruktúry alebo do union cez smerník
 +
|-
 +
| rowspan="7" | 2
 +
| ''++ --''
 +
| Inkrementácia a dekrementácia - predpona
 +
| rowspan="7" | sprava doľava
 +
|-
 +
| ''+ -''
 +
| Unárne plus a mínus
 +
|-
 +
| style="font-style:italic;" | ''! ~''
 +
| logické alebo bitové NOT
 +
|-
 +
| style="font-style:italic;" | ''(type)''
 +
| Konverzia dátového typu
 +
|-
 +
| ''*''
 +
| Dereferencia ([[Jazyk C - smerník (pointer)|smerník]])
 +
|-
 +
| ''&''
 +
| Referencia ([[Jazyk C - smerník (pointer)|smerník]])
 +
|-
 +
| ''sizeof''
 +
| Veľkosť premennej
 +
|-
 +
| 3
 +
| ''* / %''
 +
| Násobenie, delenie a modulo
 +
| rowspan="11" | zľava doprava
 +
|-
 +
| 4
 +
| ''+ -''
 +
| Súčet, rozdieľ
 +
|-
 +
| 5
 +
| ''<< >>''
 +
| Bitový posun vľavo a vpravo
 +
|-
 +
| rowspan="2" | 6
 +
| ''< <=''
 +
| Relačný operátor väčšie ako a väčšie alebo rovné ako
 +
|-
 +
| ''> >=''
 +
| Relačný operátor menšie ako a menšie alebo rovné ako
 +
|-
 +
| 7
 +
| ''== !=''
 +
| Relačný operátor rovná sa a nerovná sa
 +
|-
 +
| 8
 +
| ''&''
 +
| Bitový súčin
 +
|-
 +
| 9
 +
| ''<nowiki>^</nowiki>''
 +
| Bitový exkluzívny súčet
 +
|-
 +
| 10
 +
| ''<nowiki>|</nowiki>''
 +
| Bitový súčet
 +
|-
 +
| 11
 +
| ''&&''
 +
| Logický súčin
 +
|-
 +
| 12
 +
| ''<nowiki>||</nowiki>''
 +
| Logický súčet
 +
|-
 +
| 13
 +
| ''? :''
 +
| Ternárna podmienka
 +
| rowspan="6" | sprava doľava
 +
|-
 +
| rowspan="5" | 14
 +
| ''=''
 +
| Priradenie
 +
|-
 +
| ''+= -=''
 +
| rowspan="4" | Operátor a následné priradenie
 +
|-
 +
| ''*= /= %=''
 +
|-
 +
| ''<<= >>=''
 +
|-
 +
| ''&= ^= <nowiki>|</nowiki>=''
 +
|-
 +
| 15
 +
| '',''
 +
| Čiarka
 +
| zľava doprava
 +
|}
 +
 
 +
==Referencie==

Aktuálna revízia z 15:31, 26. máj 2020

Operátor je symbol, ktorý hovorí kompilátoru, aby vykonával konkrétne matematické alebo logické funkcie. [1] Jeho návratový typ určený podľa typu vstupných hodnôt.

Operátory sa dajú podľa počtu vstupov rozdeliť na unárne, binárne a ternárne.

Unárne ++, --, -(zmena znamienka), !, ~, sizeof
Binárne +, -, *, /, %, &&, ||, <<, >>, &, |, ^, <, >, <=, >=, ==, !=, =
Ternárne ? :


Aritmetické operátory

Sčítanie +
Tento operátor slúži na sčítanie dvoch celých alebo reálnych čísiel. Jeho návratová hodnota je súčet daných čísiel. Vyhodnocuje sa zľava doprava.
x = A + B;
Rozdiel
Tento operátor slúži na odčítanie dvoch celých alebo reálnych čísiel. Jeho návratová hodnota je rozdiel ľavého a pravého čísla. Vyhodnocuje sa zľava doprava.
x = A - B;
Súčin *
Tento operátor slúži na násobenie dvoch celých alebo reálnych čísiel. Jeho návratová hodnota je súčin daných čísiel. Vyhodnocuje sa zľava doprava.
x = A * B;
Podiel /
Tento operátor slúži na delenie dvoch celých alebo reálnych čísiel. Jeho návratová hodnota je podiel ľavého a pravého čísla. Vyhodnocuje sa zľava doprava.
x = A / B;
Zvyšok po delení %
Tento operátor slúži na vypočítanie celočíselného zvyšku po delení celých čísiel. Jeho návratová hodnota sa nazýva modulo. Vyhodnocuje sa zľava doprava.
x = A * B;
Zmena znamienka -
Tento operátor slúži na zmenu znamienka daného čísla. Jeho návratová hodnota je dané číslo krát -1.
x = -A;
y = A * (-1); //ekvivalent
Inkrementácia ++
Tento unárny operátor slúži na zväčšenie daného čísla o 1.
A++; //hodnota A sa zväčší o 1.
++A; //Hodnota A sa tiež zväčší o 1.

vypis(A++); //zväčší hodnotu i o 1, ale vráti originálnu hodnotu, ktorú potom vypíše
vypis(++A); //najprv zväčší hodnotu i o 1, potom toto číslo vypíše
Dekrementácia --
Tento unárny operátor slúži na zmenšenie daného čísla o 1.
A--; //hodnota A sa zmenší o 1.
--A; //Hodnota A sa tiež zmenší o 1.

vypis(A--); //zmenší hodnotu i o 1, ale vráti originálnu hodnotu, ktorú potom vypíše
vypis(--A); //najprv zmenší hodnotu i o 1, potom toto číslo vypíše

Logické operátory

Logický súčin &&
Tento operátor slúži na vypočítanie logického súčinu dvoch čísiel. Jeho návratová hodnota môže byť len TRUE alebo FALSE. Vyhodnocuje sa zľava doprava.
x = A && B;
Logický súčet ||
Tento operátor slúži na vypočítanie logického súčtu dvoch čísiel. Jeho návratová hodnota môže byť len TRUE alebo FALSE. Vyhodnocuje sa zľava doprava.
x = A || B;
Negácia !
Tento operátor slúži na vypočítanie negácie jedného čísla. Jeho návratová hodnota môže byť len TRUE alebo FALSE.
x = !A;
Poznámka
Vstupné hodnoty logických operátorov môžu byť len TRUE (1) alebo FALSE (0), avšak v jazyku C/C++ sú všetky hodnoty okrem 0 považované za TRUE.

Bitové operátory

Bitový posun vľavo <<
Tento operátor slúži na posunutie bitov jedného čísla vľavo o zadaný počet (chýbajúce bity sa nahradia 0). Rovnaký výsledok sa dá dosiahnuť aj násobením daného čísla násobkami 2 (napr. A << 3 = A * 2 * 3). Vyhodnocuje sa zľava doprava.
//A = B00110101
x = A << 2;
//A = B11010100
Poznámka
V jazyku C/C++ poznáme viac foriem zápisu čísiel, buď napíšeme číslo v dekadickej sústave napr. 125, alebo v binárnej sústave napr. B01111101, alebo v hexadecimálnej sústave napr. 0x7D.
Bitový posun vpravo >>
Tento operátor slúži na posunutie bitov jedného čísla vpravo o zadaný počet (chýbajúce bity sa nahradia 0). Rovnaký výsledok sa dá dosiahnuť aj delením daného čísla násobkami 2 (napr. A >> 3 = A /( 2 * 3)). Vyhodnocuje sa zľava doprava.
//A = B00110101
x = A >> 2;
//A = B00001101
Bitový súčin &
Tento operátor vypočíta logický súčin každého jedného bitu v čísle. Vyhodnocuje sa zľava doprava.

Napr.:

 00110101
&10100110
---------
 00100100

Využíva sa najmä ak chceme zmeniť alebo získať určitý bit v čísle.

x = A & B;
Bitový súčet |
Tento operátor vypočíta logický súčet každého jedného bitu v čísle. Vyhodnocuje sa zľava doprava.

Napr.:

 00110101
|10100110
---------
 10110111

Využíva sa najmä ak chceme zmeniť alebo získať určitý bit v čísle.

x = A | B;
Bitový exkluzívny súčet ^
Tento operátor vypočíta exkluzívny súčet každého jedného bitu v čísle. Vyhodnocuje sa zľava doprava.

Napr.:

 00110101
^10100110
---------
 10010011

Využíva sa najmä pri šifrovaní.

x = A ^ B;
Bitová negácia ~
Tento operátor vypočíta logická negáciu každého jedného bitu v čísle. Vyhodnocuje sa zľava doprava.

Napr.:

 00110101
~
---------
 11001010
x = ~A;

Relačné operátory

Menšie ako <
Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len TRUE alebo FALSE. Ak je ľavé číslo menšie ako pravé, tak vráti TRUE, inak FALSE. Vyhodnocuje sa zľava doprava.
A < B;
Väčšie ako >
Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len TRUE alebo FALSE. Ak je ľavé číslo väčšie ako pravé, tak vráti TRUE, inak FALSE. Vyhodnocuje sa zľava doprava.
A > B;
Menšie alebo rovné ako <=
Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len TRUE alebo FALSE. Ak je ľavé číslo menšie alebo rovné ako pravé, tak vráti TRUE, inak FALSE. Vyhodnocuje sa zľava doprava.
A <= B;
Väčšie alebo rovné ako >=
Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len TRUE alebo FALSE. Ak je ľavé číslo väčšie alebo rovné ako pravé, tak vráti TRUE, inak FALSE. Vyhodnocuje sa zľava doprava.
A >= B;
Rovná sa ==
Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len TRUE alebo FALSE. Ak je ľavé číslo rovnaké ako pravé, tak vráti TRUE, inak FALSE. Vyhodnocuje sa zľava doprava.
A == B;
Nerovná sa !=
Tento operátor porovnáva dve zadané čísla. Jeho návratová hodnota môže byť len TRUE alebo FALSE. Ak je ľavé číslo iné ako pravé, tak vráti TRUE, inak FALSE. Vyhodnocuje sa zľava doprava.
A != B;

Priraďovací operátor

Priradenie =
Operátor priradenia slúži na priradenie hodnoty do premennej. Môže byť použitý na akýkoľvek datový typ s jedinou podmienkou, že prvý parameter (ľava strana), musí byť prijímač hodnoty, napríklad premenná. v závislosti na programovací jazyk môžu byť rozdielne podmienky pre priradenie hodnoty do premenných, napríklad na základe závislosti na type.[2] Priradenie, rovnako ako ostatné operátory, má taktiež návratovú hodnotu a ňou je hodnota, ktorá bola priradená. Vyhodnocuje sa sprava doľava.
A = B + 1
Poznámka
V jazyku C/C++ sa pri používaní operátorov postupuje podľa priority operátorov, inak sa zväčša postupuje zľava doprava, napr.: A = A + 5 + B * 6 bude vypočítané ako x = B * 6; y = 5 + x; A = A + y.
Operátor a následné priradenie
Pre zjednodušenie programovania sa takmer všetky aritmetické a bitové operátory dajú nahradiť operátormi spojenými s priradením:
A = A + 2;  //A += 2;
A = A - 2;  //A -= 2;
A = A * 2;  // A *= 2;
A = A / 2;  //A /= 2;
A = A % 2;  //A %= 2;

A = A << 2; //A <<= 2;
A = A >> 2; //A >>= 2;
A = A & 2;  //A &= 2;
A = A | 2;  //A |= 2;
A = A ^ 2;  //A ^= 2;

Vyhodnocuje sa sprava doľava.

Miskuidné operátory

Veľkosť premennej sizeof(x)
Tento operátor vráti počet bajtov, ktoré daný dátový typ zaberá v pamäti RAM.
x = sizeof(int); //Zvyčajne vráti hodnotu 4 (závisí od architektúry procesora)
byte a;
x = sizeof(a); //Vráti hodnotu 1, pretože byte zaberá iba jeden bajt
byte b[5];
x = sizeof(b); //Vráti hodnotu 5, pretože pole b zaberá 5 bajtov
x = sizeof(b[0]); //Vráti hodnotu 1, pretože byte zaberá iba jeden bajt

Podmienený operátor ? : Tento operátor najprv zistí, či podmienka pred ? platí. Ak áno, tak vráti hodnotu medzi ? a :, inak vráti hodnotu za : .

x = (1 > 2)?5:6; //Vráti hodnotu 6
x = (1 < 2)?5:6; //Vráti hodnotu 5

Ostatné operátory Poznáme ešte dva operátory: referenciu (&) a dereferenciu (*). Tieto operátory sú bližšie vysvetlené v sekii Jazyk C - smerník (pointer).

Priorita operátorov

Tabuľka nižšie zobrazuje prioritu operátorov a smer zápisu v jazyku C.

Prednosť Operátor Popis Zápis
1 ++ -- Inkrementácia a dekrementácia - prípona zľava doprava
() Volanie funkcie
[] Indexovanie poľa
. Prístup do štruktúry alebo do union
-> Prístup do štruktúry alebo do union cez smerník
2 ++ -- Inkrementácia a dekrementácia - predpona sprava doľava
+ - Unárne plus a mínus
! ~ logické alebo bitové NOT
(type) Konverzia dátového typu
* Dereferencia (smerník)
& Referencia (smerník)
sizeof Veľkosť premennej
3 * / % Násobenie, delenie a modulo zľava doprava
4 + - Súčet, rozdieľ
5 << >> Bitový posun vľavo a vpravo
6 < <= Relačný operátor väčšie ako a väčšie alebo rovné ako
> >= Relačný operátor menšie ako a menšie alebo rovné ako
7 == != Relačný operátor rovná sa a nerovná sa
8 & Bitový súčin
9 ^ Bitový exkluzívny súčet
10 | Bitový súčet
11 && Logický súčin
12 || Logický súčet
13 ? : Ternárna podmienka sprava doľava
14 = Priradenie
+= -= Operátor a následné priradenie
*= /= %=
<<= >>=
&= ^= |=
15 , Čiarka zľava doprava

Referencie