Jazyk C - operátory: Rozdiel medzi revíziami
Riadok 199: | Riadok 199: | ||
Pre zjednodušenie programovania sa takmer všetky aritmetické a bitové operátory dajú nahradiť operátormi spojenými s priradením: | 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> | ||
+ | |||
+ | |||
+ | ==Miskuidné operátory== | ||
+ | |||
+ | ===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"> | ||
+ | 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 byte | ||
+ | byte b[5]; | ||
+ | x = sizeof(b); //Vráti hodnotu 5, pretože pole b zaberá 5 bytov | ||
+ | x = sizeof(b[0]); //Vráti hodnotu 1, pretože byte zaberá iba jeden byte | ||
+ | </source> | ||
+ | |||
+ | ===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 : . | ||
+ | <source lang="c"> | ||
+ | x = (1 > 2)?5:6; //Vráti hodnotu 6 | ||
+ | x = (1 < 2)?5:6; //Vráti hodnotu 5 | ||
+ | </source> | ||
+ | |||
+ | ===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)]]. | ||
==Zdroje== | ==Zdroje== |
Verzia zo dňa a času 01:24, 26. február 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.
Učebné texty
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.
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.
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.
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.
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.
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 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 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.
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.
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).
//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)).
//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. 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. 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. 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. 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.
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.
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.
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.
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.
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.
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á.
A = B + 1
Poznámka: V jazyku C/C++ sa pri používaní operátorov postupuje podľa priority operátorov, inak sa postupuje zľava doprava, napr.: A = A + 5 * 6 * B bude vypočítané ako x = 6 * B; 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;
Miskuidné operátory
Veľkosť premennej sizeof(x)
Tento operátor vráti počet bitov, 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 byte
byte b[5];
x = sizeof(b); //Vráti hodnotu 5, pretože pole b zaberá 5 bytov
x = sizeof(b[0]); //Vráti hodnotu 1, pretože byte zaberá iba jeden byte
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).