true (tosi) tai false (epätosi).
Esimerkiksi seuraava koodi määrittelee totuusarvomuuttujan
(tyyppi bool) ja asettaa siihen arvon true:
bool x = true;Totuusarvo myös vastaa lukua niin, että
true on 1 ja false on 0.
Toisaalta mikä tahansa lukuarvo voidaan tulkita totuusarvona:
luku 0 on false ja
kaikki muut luvut ovat true.
==, !=,
<, <=,
> ja >=.
Esimerkiksi lauseke a+b == c on tosi,
jos a+b ja c ovat yhtä suuret.
Tavalliset loogiset operaattorit ovat
&& (ja) sekä || (tai).
Esimerkiksi lauseke x >= 3 && x <= 8 on tosi,
jos x on välillä 3...8.
Lisäksi operaattori ! lausekkeen edessä
muuttaa sen totuusarvon käänteiseksi.
Esimerkiksi lausekkeet x > 5
ja !(x <= 5) tarkoittavat samaa.
Voimme selventää totuusarvoisen lausekkeen tulkintaa sulkujen avulla.
Esimerkiksi lauseke
x%4 == 0 && (x%100 != 0 || x%400 == 0)
on tosi silloin, kun x on karkausvuosi.
Lauseke vaatii, että x on jaollinen 4:llä
ja lisäksi jos x on jaollinen 100:lla,
se on jaollinen myös 400:lla.
Totuusarvoisen lausekkeen osat käydään läpi vasemmalta oikealle,
ja jos tulos on jo selvä, jäljellä olevia osia ei tarkasteta.
Esimerkiksi lausekkeen b != 0 && a/b == 2
osaa a/b == 2 ei tarkasteta, jos b == 0,
koska tulos on varmasti false.
Niinpä ei haittaa, vaikka osassa
a/b == 2 odottaisi nollalla jakaminen.
if (ehto) {
koodi
}
Tässä ehto on jokin totuusarvoinen lauseke.
Jos ehto pätee, suoritetaan lohkossa oleva koodi,
ja muuten ei tapahdu mitään.
Voimme myös lisätä toisen haaran:
if (ehto) {
koodi1
} else {
koodi2
}
Nyt jos ehto pätee,
suoritetaan koodi 1, ja muuten suoritetaan koodi 2.
Tavallinen tapa on ketjuttaa ehtoja näin:
if (ehto1) {
koodi1
} else if (ehto2) {
koodi2
} else if (ehto3) {
koodi3
...
}
Tämä koodi käy läpi ehtoja ja suorittaa ensimmäisen koodin,
jota edeltävä ehto pätee.
int ika;
cout << "Kuinka vanha olet? ";
cin >> ika;
if (ika < 0 || ika > 120) {
cout << "Mahdotonta";
} else if (ika < 18) {
cout << "Olet alaikäinen";
} else {
cout << "Olet aikuinen";
}
Jos ikä on alle 0 tai yli 120, viestinä on "Mahdotonta".
Muuten ohjelma tulostaa "Olet alaikäinen",
jos ikä on alle 18, tai "Olet aikuinen",
jos ikä on ainakin 18.
Ohjelman suoritus voi näyttää seuraavalta:
Kuinka vanha olet? 10 Olet alaikäinen
= ja == välillä on tärkeä ero:
= asettaa muuttujan arvon,
kun taas == vertailee arvoja.
Tavallinen ohjelmointivirhe on kirjoittaa ehdossa
==:n sijasta =:
if (x = 5) {
cout << "apina";
}
Tässä ehtona on lauseke x = 5
eli muuttujan asetus.
Lausekkeen arvo on 5, joka on tosi,
koska kaikki luvut paitsi 0 ovat tosia.
Niinpä ehto on aina tosi, eli koodi tulostaa aina "apina".
{ ja }.
Esimerkiksi seuraavat koodit toimivat samalla tavalla:
if (x == 5) {
cout << "apina";
}
if (x == 5) cout << "apina";Seuraava koodi ei toimi niin, kuin ehkä voisi kuvitella:
if (x == 5)
cout << "apina";
cout << "banaani";
Koska lohkoa ei ole,
ehto vaikuttaa vain seuraavaan lauseeseen
eli koodi vastaa tätä:
if (x == 5) {
cout << "apina";
}
cout << "banaani";
a ? b : c
saa arvon b,
jos ehto a pätee,
ja muuten arvon c.
Ehdollista lauseketta voi käyttää vaikkapa näin:
int s = x%2 == 0 ? 5 : 8;Tämä vastaa seuraavaa koodia:
int s;
if (x%2 == 0) {
s = 5;
} else {
s = 8;
}