Podmínka if, repeat, while apod. přijímá výsledek typu boolean. Ten se dá získat jako výsledek nějaké logické operace - výrazu, jehož výsledkem je "ano (true)" nebo "ne (false)" (třeba "rovná se?", "je menší než X?",...).
Boolean hodnoty (výsledek takového výrazu) můžeš samozřejmě uložit jako proměnnou - tak jak to děláš. Jelikož podmínky přijímají boolean a proměnná je typu boolean, tak nemusíš nic porovnávat, prostě napíšeš:
Což nejen vypadá lépe, ale v jazycích, které nemají "silný" typ boolean to je i bezpečnější. Takové jazyky typicky interpretují 0, prázdný řetězec nebo prázdný seznam proměnných jako "false" a cokoliv jiného jako "true". Čímž vzniká problém, že když se zeptáš:
(což je jako by jsi v Pascal napsal podm = false)
tak si zaděláváš na malér, protože pokud podm bude třeba prázdný řetězec, tak sice to je "false", ale podmínka selže, protože to není konkrétně tato reprezentace (nula).
Klasicky C/C++ interpretuje 0 jako false a cokoliv jiného jako true.
Prostě se tomuhle všichni vyhýbají jako moru, protože je v tom pak bordel. Kapiš?
