A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
Agenda Další operátory v jazyce C Priorita a asociativita vyhodnocování operátorů
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.
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
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
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
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);
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.
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);
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;
sizeof Operátor pro získání délky objektu nebo typu. Návratová hodnota: počet bytů. Obecná syntaxe: unsigned int sizeof( );
sizeof Příklad: int velikost; float cislo; double pole[10]; velikost = sizeof(int); velikost = sizeof(cislo); velikost = sizeof(pole);
Čá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.
Čárka int i = 2; j = 3; int k; k = (i++, i + j); int i = 2; j = 3; int k; i++; k = i + j; PříkladEkvivalentní zápis
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í.
Priorita a asociativita vyhodnocování operátorů PrioritaOperátoryAsociativita 1. -> () []Zleva ! ~ & * (přetypování) sizeof Zprava 3* / %Zleva Zleva 5 >Zleva 6 =Zleva 7== !=Zleva 1 ) Unární operátor + nebo - 2 ) Binární operátor + nebo -
Priorita a asociativita vyhodnocování operátorů PrioritaOperátoryAsociativita 8&Zleva 9^ 10|Zleva 11&&Zleva 12||Zleva 13?:Zprava 14= += -= *= /= %= >= &= |= ^= Zprava 15,Zleva
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
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));
Priorita a asociativita vyhodnocování operátorů Pokud si nejste jisti prioritou a asociativitou, použijte závorky.
Závorky 3 druhy závorek ( … ) [ … ] { … }
Závorky( … )
Závorky[ … ]
Závorky{ … }
A1PRG 4. Operátory II. Děkuji za pozornost Ing. Michal Heczko 218/U3 Prezentace k dispozici na