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

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
d
Riadok 8: Riadok 8:
 
===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.
+
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.
 
<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.
+
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.
 
<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.
+
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.
 
<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.
+
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.
 
<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'''.
+
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.
 
<source lang="c">x = A * B;</source>
 
<source lang="c">x = A * B;</source>
  
Riadok 43: Riadok 43:
 
Tento 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 54: Riadok 54:
 
Tento 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
Riadok 66: Riadok 66:
 
===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'''.
+
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.
 
<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'''.
+
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.
 
<source lang="c">x = A || B;</source>
 
<source lang="c">x = A || B;</source>
  
Riadok 86: Riadok 86:
 
===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''').
+
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.
 
<source lang="c">
 
<source lang="c">
 
//A = B00110101
 
//A = B00110101
Riadok 97: Riadok 97:
 
===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''')).
+
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.
 
<source lang="c">
 
<source lang="c">
 
//A = B00110101
 
//A = B00110101
Riadok 106: Riadok 106:
 
===Bitový súčin &===
 
===Bitový súčin &===
  
Tento operátor vypočíta logický súčin každého jedného bitu v čísle. Napr.:<source lang="c">
+
Tento operátor vypočíta logický súčin každého jedného bitu v čísle. Vyhodnocuje sa zľava doprava. Napr.:<source lang="c">
 
  00110101
 
  00110101
 
&10100110
 
&10100110
Riadok 118: Riadok 118:
 
===Bitový súčet |===
 
===Bitový súčet |===
  
Tento operátor vypočíta logický súčet každého jedného bitu v čísle. Napr.:<source lang="c">
+
Tento operátor vypočíta logický súčet každého jedného bitu v čísle. Vyhodnocuje sa zľava doprava. Napr.:<source lang="c">
 
  00110101
 
  00110101
 
|10100110
 
|10100110
Riadok 130: Riadok 130:
 
===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. Napr.:<source lang="c">
+
Tento operátor vypočíta exkluzívny súčet každého jedného bitu v čísle. Vyhodnocuje sa zľava doprava. Napr.:<source lang="c">
 
  00110101
 
  00110101
 
^10100110
 
^10100110
Riadok 142: Riadok 142:
 
===Bitová negácia ~===
 
===Bitová negácia ~===
  
Tento operátor vypočíta logická negáciu každého jedného bitu v čísle. Napr.:<source lang="c">
+
Tento operátor vypočíta logická negáciu každého jedného bitu v čísle. Vyhodnocuje sa zľava doprava. Napr.:<source lang="c">
 
  00110101
 
  00110101
 
~
 
~
Riadok 157: Riadok 157:
 
===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'''.
+
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.
 
<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'''.
+
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.
 
<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'''.
+
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.
 
<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'''.
+
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.
 
<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'''.
+
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.
 
<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'''.
+
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.
 
<source lang="c">A != B;</source>
 
<source lang="c">A != B;</source>
  
Riadok 190: Riadok 190:
 
===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á.
+
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.
 
<source lang="c">A = B + 1</source>
 
<source lang="c">A = B + 1</source>
  
Riadok 211: Riadok 211:
 
A = A ^ 2; ..... A ^= 2;
 
A = A ^ 2; ..... A ^= 2;
 
</source>
 
</source>
 
+
Vyhodnocuje sa sprava doľava.
  
 
==Miskuidné operátory==
 
==Miskuidné operátory==

Verzia zo dňa a času 01:43, 29. 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. 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 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. 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 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