Podmínky umožňují větvení programu. Jsou jimi vyhodnocovány podmínky a podle toho buď vykonávány či nevykonávany určité funkce.
If je tím nejzákladnějším druhem podmínky, obsahuje nejdříve klíčové slovo if, samotnou podmínku (v kulatých závorkách ())a dále tělo podmínky (ve složených závorkách {}), takto:
if (podmínka) { tělo podmínky //Vykoná se, pokud je podmínka pravdivá }
Pokud je podmínka vyhodnocena jako pravdivá (je rovna 1), vykoná se tělo podmínky (tedy všechny příkazy a funkce ve složených závorkách), například:
int i; if (i>5) { printf("Hodnota promenne i je vetsi nez 5."); }
Složené závorky můžeme také vynechat, v takovém případě se vykoná pouze první funkce následující po kulatých závorkách.
If-else je jakési rozšíření podmínky If, začátek je stejný jako u If, ale dále následuje klíčové slov else a další tělo podmínky (opět ve složených závorkách{}), takto:
if (podmínka) { první tělo podmínky //Vykoná se, pokud je podmínka pravdivá } else { druhé tělo podmínky //Vykoná se, pokud podmínka není pravdivá }
Pokud je podmínka vyhodnocena jako pravdivá (je rovna 1), vykoná se první tělo podmínky (tedy všechny příkazy a funkce ve prvních složených závorkách), v opačném případě se vykoná druhé tělo podmínky (v druhých složených závorkách) například:
int i; if (i>5) { printf("Hodnota promenne i je vetsi nez 5."); } else { printf("Hodnota promenne i je mensi nebo rovna 5."); }
Vysvětleno na Linuxsoftu.
Switch je pokročilejší podmínka, nejčastěji používaná jako zjednodušení zápisu několikanásobného If-else (tedy např. If-else if-else if-else).
Zápis začíná klíčovým slovem switch, následuje nějaká hodnota v kulatých závorkách () a poté tělo podmínky ve složených závorkách.
Tělo podmínky obsahují klíčová slova case a default. Case použijeme, když chceme porovnat hodnotu v kulatých závorkách s jinou hodnotou, kterou zapíšeme za daný case a dále napíšeme dvojtečku.
Těchto casů můžeme napsat do Switche hned několik pokaždé platí, že pokud hodnotu v kulatých závorkách je rovna hodnotě v casu, vykonají se všechny příkazy a funkce až do konce těla podmínky Switche (tedy i přes další casy a default), popřípadě prvního příkazu break.
Klíčové slovo default následované opět dvojtečkou má podobnou funkci jako casy, vyhodnotí se pozitivně , pokud se pozitivně nevyhodnotil žádný vždy bez ohledu na hodnotu. Proto se default nepoužívá na začátku bloku s case, protože by ihned platil.
case
int i; switch (i) { case 1: printf("i je rovno 1"); case 2: printf("i je rovno 1 nebo 2"); //case 1 nebyl zakončen breakem, proto se vykoná i tento příkaz a i může být rovno 1 break; case 3: printf("i je rovno 3");//case 1 a 2 byly ukončeny breakem, tento příkaz už se tedy nevykoná, pokud je i rovno 1 nebo 2 break; default: printf("i neni rovno 1, 2 ani 3"); }
Ternární operátor je, jak už název vypovídá, operátor, který pracuje hned se třemi operandy; zapisuje se takto:
[první operand]?[druhý operand]:[třetí operand]
Je jakousi zkrácenou formou podmínky If-else, až na to, že je to výraz (což značně omezuje jeho použití). Tedy:
podmínka?hodnota když ano:hodnota když ne
Pokud je podmínka před otazníkem pravdivá (rovná 1), vrátí se hodnota výrazu za otazníkem a před dvojtečkou, v opačném případě se vrátí hodnota výrazu za dvojtečkou, např.:
int i; printf(i>5?"Hodnota promenne i je vetsi nez 5.":"Hodnota promenne i je mensi nebo rovna 5.");