Logické operátory: nebo

Druhý logický operátor je || (dvě svislé čáry za sebou) a znamená „nebo“. Řekněme, že dny v týdnu číslujeme od 1 (pondělí) do 7 (neděle). „Pokud je den číslo 6 nebo 7, je víkend“:

int den = 7;

if (den == 6 || den == 7) {
    printf("Je víkend\n");
}

Tento kód vypíše:

Je víkend

Podmínka spojená pomocí || je pravdivá, když je pravdivá aspoň jedna z jejích částí. Nepravdivá je, jen když jsou nepravdivé všechny:

  • true || true je true
  • true || false je true
  • false || true je true
  • false || false je false

Častou chybou je zkrátit podmínku tak, jak mluvíme: den == 6 || 7. Pravá část je pak jen číslo 7, žádné porovnání. A jak víte ze cvičení o pravdě a nepravdě, každé číslo kromě 0 se počítá jako pravda. Celá podmínka je tedy pravdivá vždy, i v pondělí, a překladač žádnou chybu neohlásí. Každá část potřebuje vlastní porovnání: den == 6 || den == 7.

&& a || můžete použít v jedné podmínce. Tak jako má násobení přednost před sčítáním, má && přednost před ||. Co k sobě patří, seskupte závorkami, stejně jako v matematice:

int den = 6;
int teplota = 15;

if ((den == 6 || den == 7) && teplota > 20) {
    printf("Jedeme na výlet\n");
} else {
    printf("Zůstaneme doma\n");
}

Tento kód vypíše:

Zůstaneme doma

Nejdřív se vyhodnotí část v závorkách: je sobota, takže je pravdivá. Jenže teplota > 20 je nepravda a true && false je nepravda. Bez vnitřních závorek by program nejdřív spojil den == 7 && teplota > 20 a podmínka by byla pravdivá každou sobotu, ať je jakékoli počasí. Vnější závorky patří k příkazu if, a proto jsou na začátku podmínky dvě.

Pokyny

Kino dává slevu studentům a lidem od 65 let. Místo komentáře napište příkaz if, který vypíše Sleva, pokud je je_student pravda nebo je vek aspoň 65. Použijte ||.

Nové pravidlo: slevy jsou jen ve středu, tedy když je den roven 3. Na konec podmínky přidejte && den == 3, část s || dejte do závorek a přidejte větev else, která vypíše Plná cena. Dnes je pondělí (den je 1), a tak program vypíše Plná cena.

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

8/12