Porovnávací operátory

Znaky < a >, které jste použili v podmínkách, jsou porovnávací operátory: porovnávají dvě hodnoty a výsledkem je pravda, nebo nepravda. C++ jich má šest:

  • == rovná se: 5 == 5
  • != nerovná se: 5 != 3
  • > větší než: 5 > 3
  • < menší než: 3 < 5
  • >= větší nebo rovno: 5 >= 5
  • <= menší nebo rovno: 3 <= 5

Všechny příklady v seznamu jsou pravdivé. U !=, >= a <= je rovnítko vždy druhé a mezi znaky není mezera. Pozor na rozdíl mezi > a >= na hranici: 18 > 18 je nepravda, ale 18 >= 18 je pravda. „Je mu 18 nebo víc“ je proto vek >= 18.

„Rovná se“ se píše dvěma rovnítky, ==, protože jedno rovnítko už svou úlohu má: body = 10 přiřazuje, tedy uloží 10 do proměnné body. body == 10 porovnává: ptá se, jestli je v body 10, a nic nemění.

Napsat v podmínce = místo == je jedna z nejčastějších chyb. V C++ je obzvlášť zrádná, protože se program přeloží a spustí:

int body = 7;

if (body = 10) {
    std::cout << "Plný počet bodů!" << std::endl;
}
std::cout << "Body: " << body << std::endl;

Tento kód vypíše:

Plný počet bodů!
Body: 10

body = 10 v podmínce nic neporovná. Uloží do body hodnotu 10 a ta se pak použije jako podmínka. C++ bere každé číslo kromě 0 jako pravdu, takže podmínka je pravdivá vždy, ať bylo v body cokoli, a původních 7 bodů je navíc pryč. Překladač k tomu vypíše jen varování, které tady v editoru neuvidíte. Když program provede blok, který by provést neměl, podívejte se nejdřív, jestli v podmínce není = místo ==.

Porovnávat můžete i text, nejen čísla:

std::string heslo = "kotatko42";

if (heslo == "kotatko42") {
    std::cout << "Vítejte zpět" << std::endl;
} else {
    std::cout << "Špatné heslo" << std::endl;
}

Tento kód vypíše:

Vítejte zpět

Jako u každého programu s std::string nezapomeňte na začátku na #include <string>. Dva texty se rovnají, jen když se shodují úplně přesně, znak po znaku. Velké a malé písmeno jsou různé znaky: když je v proměnné jmeno text "Anna", je jmeno == "anna" nepravda. Jiný text je i "kotatko42 " s mezerou na konci. Nezapomeňte na uvozovky kolem textu, se kterým porovnáváte. Kdybyste napsali heslo == kotatko42 bez nich, překladač by hledal proměnnou kotatko42 a ohlásil by chybu error: use of undeclared identifier 'kotatko42'.

Pokyny

E-shop dává dárek svému stému zákazníkovi. Spusťte program: vypíše gratulaci a Zákazník číslo 100, i když je to teprve 57. zákazník. Opravte podmínku tak, aby porovnávala. Program pak vypíše jen Zákazník číslo 57.

Do Česka e-shop doručuje zítra, jinam do 3 dnů. Na konec programu napište příkaz if s větví else: pokud je zeme rovna "Česko", vypište Doručení zítra, jinak vypište Doručení do 3 dnů. Program vypíše:

Zákazník číslo 57
Doručení do 3 dnů

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

4/11