Download - Operátory (2. část)
![Page 1: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/1.jpg)
A1PRG - Programování – Seminář
Ing. Michal Heczko [email protected]
Operátory (2. část) 4
Verze 2009.01
![Page 2: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/2.jpg)
Agenda
Další operátory v jazyce C Priorita a asociativita vyhodnocování
operátorů
![Page 3: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/3.jpg)
Opakování
Operátor - symbolické vyjádření elementární funkce s jednou nebo i více vstupními proměnnými, vrací jednu výstupní hodnotu. Aritmetické operátory – základní
matematické operace. Relační operátory – porovnání dvou hodnot Logické operátory – logické operace nad
logickými hodnotami. Bitové logické operátory - logické operace
nad jednotlivými bity.
![Page 4: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/4.jpg)
Opakování
Dělení operátorů podle počtu vstupních hodnot: Unární operátory –pouze jedna vstupní
hodnota Binární operátory – dvě vstupní hodnoty Ternární operátory – tři vstupní hodnoty
![Page 5: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/5.jpg)
Operátor podmínky
Jediný ternární operátor v jazyce C Obecná syntaxe:
Výraz_1 ? Výraz_2 : Výraz_3
Příklad: (x > 5) ? 1 : 0
![Page 6: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/6.jpg)
Operátor podmínky
V určitých případech nahrazuje příkaz IF Př.
if (y > z)
{
x = y;
}
else
{
x = z;
}
x = (y > z) ? y : z
![Page 7: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/7.jpg)
Adresní operátor
Operátor reference – získání adresy objektu
Unární operátor & Pozn. Operátor & je v jazyce C definován i
jako binární ve významu bitového součinu. Návratovou hodnotou tohoto operátoru
je adresa proměnné. Použití např. u funkce scanf:
scanf(“%d”,&x);
![Page 8: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/8.jpg)
Unární operátor *
Operátor dereference – získání objektu dle adresy. Pozn. Operátor * je v jazyce C definován i
jako binární ve významu součinu. Umožňuje odkazovat na adresu, která je
uložená v dané proměnné. Umožňuje přistupovat k danému objektu,
na jehož adresu odkazuje.
![Page 9: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/9.jpg)
Příklad
int *x;
int y = 5;
x = &y;
printf(“%d %d %d”,*x,x,y);
*x = 8;
printf(“%d %d %d”,*x,x,y);
x = 8;
printf(“%d %d %d”,*x,x,y);
![Page 10: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/10.jpg)
Operátor přetypování
Slouží k přetypování z jednoho datového typu na jiný.
Zápis: Nový datový typ v závorkách před jménem
proměnné. Příklad:int a=5, b=3;double c;c = a / (double)b;
![Page 11: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/11.jpg)
sizeof
Operátor pro získání délky objektu nebo typu.
Návratová hodnota: počet bytů.
Obecná syntaxe:unsigned int sizeof(<jmeno>);
![Page 12: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/12.jpg)
sizeof
Příklad:int velikost;float cislo;double pole[10];
velikost = sizeof(int);
velikost = sizeof(cislo);
velikost = sizeof(pole);
![Page 13: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/13.jpg)
Čárka
Postupné vyhodnocování dvou výrazů
Obecný zápis:výraz_1, výraz_2
Postup vyhodnocování: Nejprve se vyhodnotí výraz_1 a následně výraz_2. Jeho hodnota se stává hodnotou celého výrazu.
![Page 14: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/14.jpg)
Čárka
int i = 2; j = 3;
int k;
k = (i++, i + j);
int i = 2; j = 3;
int k;
i++;
k = i + j;
Příklad Ekvivalentní zápis
![Page 15: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/15.jpg)
Priorita a asociativita vyhodnocování operátorů
Priorita – určuje, který operátor bude vyhodnocen jako první
Asociativita – pokud mají dva operátory stejnou prioritu, rozhoduje o pořadí směr vyhodnocování.
![Page 16: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/16.jpg)
Priorita a asociativita vyhodnocování operátorů
Priorita
Operátory Asociativita
1 . -> () [] Zleva
2 +1 -1 ++ -- ! ~ & * (přetypování) sizeof
Zprava
3 * / % Zleva
4 +2 -2 Zleva
5 << >> Zleva
6 < > <= >= Zleva
7 == != Zleva1) Unární operátor + nebo - 2) Binární operátor + nebo -
![Page 17: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/17.jpg)
Priorita a asociativita vyhodnocování operátorů
Priorita
Operátory Asociativita
8 & Zleva
9 ^ Zleva
10 | Zleva
11 && Zleva
12 || Zleva
13 ?: Zprava
14 = += -= *= /= %= <<= >>= &= |= ^=
Zprava
15 , Zleva
![Page 18: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/18.jpg)
Priorita a asociativita vyhodnocování operátorů
Příklad 1:v = x + y * z; v = (x + (y * z)); Pozn.: Násobení má nejvyšší prioritu, přiřazení
nejnižší.
Příklad 2:v = x – y - z; v = ((x – y) - z); Pozn.: Rozdíl má asociativitu zleva, přiřazení
má nižší prioritu
![Page 19: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/19.jpg)
Priorita a asociativita vyhodnocování operátorů
Příklad 3:v += w << x << y / z;
v += ((w << x) << (y / z));
Příklad 4:v = (int)w & x % y / z;
v = (((int)w) & ((x % y) / z));
![Page 20: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/20.jpg)
Priorita a asociativita vyhodnocování operátorů
Pokud si nejste jisti prioritou a asociativitou, použijte závorky.
![Page 21: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/21.jpg)
Závorky
3 druhy závorek ( … ) [ … ] { … }
![Page 22: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/22.jpg)
Závorky ( … )
![Page 23: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/23.jpg)
Závorky ( … )
![Page 24: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/24.jpg)
Závorky [ … ]
![Page 25: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/25.jpg)
Závorky { … }
![Page 26: Operátory (2. část)](https://reader034.vdocuments.pub/reader034/viewer/2022050819/568144bf550346895db188e1/html5/thumbnails/26.jpg)
A1PRG 4. Operátory II.
Děkuji za pozornost
Ing. Michal Heczko
218/U3
Prezentace k dispozici na http://vyuka.fai.utb.cz