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íkendPodmínka spojená pomocí || je pravdivá, když je pravdivá aspoň jedna z jejích částí. Nepravdivá je, jen když jsou nepravdivé všechny:
true || truejetruetrue || falsejetruefalse || truejetruefalse || falsejefalse
Č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 domaNejdří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ě.
Jak psát:
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
8/12