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

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
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.

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).

Zdroje