260 likes | 428 Views
Verze 2009.01. Operátory (2. část). 4. A1PRG - Programování – Seminář Ing. Michal Heczko heczko@fai.utb.cz. Agenda. Další operátory v jazyce C Priorita a asociativita vyhodnocování operátorů. Opakování.
E N D
Verze 2009.01 Operátory (2. část) 4 A1PRG - Programování – Seminář Ing. Michal Heczko heczko@fai.utb.cz
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(<jmeno>);
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 Příklad Ekvivalentní zápis int i = 2; j = 3; int k; k = (i++, i + j); int i = 2; j = 3; int k; i++; k = i + j;
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ů 1) Unární operátor + nebo - 2) Binární operátor + nebo -
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 ( … ) • 3 významy: • za názvem funkce pro umístění argumentů funkce intmain( ) { … } • Změna priority nebo asociativity – upřednostnění jedné části výrazu před jinou x = (a + b) * c;
Závorky ( … ) • za názvem příkazu pro umístění parametrů if( x > 5 ) { … }
Závorky [ … ] • 2 významy: • Definice velikosti poleint pole[10]; • Umístění indexu prvku pole pole[5] = 11;
Závorky { … } • Označení bloku kódu • Tělo funkce intmain() { … } • Podmínky, cykly if (x > 5) { }
A1PRG 4. Operátory II. Děkuji za pozornost Ing. Michal Heczko heczko@fai.utb.cz 218/U3 Prezentace k dispozici na http://vyuka.fai.utb.cz