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.");