Yleistä
Loogisilla- ja vertailuoperaatioilla testataan muuttujan tai muuttujien arvoja. Ehto saa arvokseen tosi tai epätosi.
Esimerkiksi
if (a<b) printf ("a oli pienempi kuin b");
else printf ("a oli yhtäsuuri tai suurempi kuin b");
Testaus voidaan jakaa myös useampaan osaan.
if (a<b) printf ("a oli pienempi kuin b");
else if
...
(a==b)
...
printf
...
("a
...
oli
...
yhtäsuuri
...
kuin
...
b");
...
else
...
printf
...
("a
...
suurempi
...
kuin
...
b");
...
...
Vertailu loogisten operaatioiden avulla
Loogisilla operaatioilla saadaan informaatio siitä onko muuttuja nolla tai ei, lisäksi voidaan testata muuttujien yhtä- ja erisuuruutta.
1. muuttuja erisuuri kuin nolla
if(a) printf("a ei ole nolla");
else printf("a on nolla");
2. muuttuja on nolla
if(!a) printf("a on nolla");
else printf("a ei ole nolla");
3. muuttuja a tai muuttuja b on tosi (erisuuri kuin nolla), myös molemmat voivat olla tosia.
if(a||b) printf("muuttuja a tai muuttuja b on tosi (erisuuri kuin nolla), myös molemmat voivat olla tosia");
else printf("molemmat muuttujat ovat epätosia");
4. muuttuja a ja muuttuja b on tosi.
if(a&&b)
...
printf("muuttuja
...
a
...
ja
...
muuttuja
...
b
...
on
...
tosi
...
(erisuuri
...
kuin
...
nolla)");
...
else printf("molemmat
...
muuttujat
...
ovat
...
epätosia");
...
...
Vertailuoperaattorit
Operaattoreilla verrataan muuttujia keskenään.
1. muuttujat a ja b ovat yhtäsuuria.
if(a==b)
...
printf("a
...
ja
...
b
...
ovat
...
yhtäsuuria");
...
else printf("a
...
ja
...
b
...
ovat
...
erisuuria");
...
2.
...
muuttujat
...
a
...
ja
...
b
...
ovat
...
erisuuria.
...
if(a
...
!=b)
...
printf("a
...
ja
...
b
...
ovat
...
erisuuria");
...
else printf("a
...
ja
...
b
...
ovat
...
yhtäsuuria");
...
3.
...
muuttuja
...
a
...
on
...
pienempi
...
kuin
...
b.
...
if(a<b)
...
printf("a
...
ja
...
b
...
ovat
...
erisuuria");
...
else printf("a
...
ja
...
b
...
ovat
...
yhtäsuuria");
...
4.
...
muuttuja
...
a
...
on
...
suurempi
...
kuin
...
b.
...
if(a>b)
...
printf("muuttuja
...
a
...
on
...
suurempi
...
kuin
...
b");
...
else printf("muuttuja
...
a
...
on
...
suurempi
...
kuin
...
b");
...
5.
...
muuttuja
...
a
...
on
...
pienempi
...
tai
...
yhtäsuuri
...
kuin
...
b.
...
if(a<=b)
...
printf("muuttuja
...
a
...
on
...
pienempi
...
tai
...
yhtäsuuri
...
kuin
...
b");
...
else printf("muuttuja
...
a
...
on
...
pienempi
...
tai
...
yhtäsuuri
...
kuin
...
b");
...
6.
...
muuttujat
...
a
...
on
...
suurempi
...
tai
...
yhtäsuuri
...
kuin
...
b.
...
if(a>=b)
...
printf("muuttujat
...
a
...
on
...
suurempi
...
tai
...
yhtäsuuri
...
kuin
...
b");
...
else printf("muuttujat
...
a
...
on
...
suurempi
...
tai
...
yhtäsuuri
...
kuin
...
b");
...
7.
...
muuttujat
...
a
...
on
...
suurempi
...
tai
...
yhtäsuuri
...
kuin
...
b
...
tai
...
c
...
on
...
pienempi
...
kuin
...
d.
...
if(a>=b
...
|
...
|
...
c<d)
...
printf("muuttujat
...
a
...
on
...
suurempi
...
tai
...
yhtäsuuri
...
kuin
...
b");
...
else printf("muuttujat
...
a
...
on
...
suurempi
...
tai
...
yhtäsuuri
...
kuin
...
b
...
tai
...
c
...
on
...
pienempi
...
kuin
...
d");
...
8.
...
muuttujat
...
a
...
on suurempi tai yhtäsuuri kuin b ja c on pienempi kuin d.
if(a>=b
...
&&
...
c<d)
...
printf("muuttujat
...
a
...
on
...
suurempi
...
tai
...
yhtäsuuri
...
kuin
...
b");
...
else printf("muuttujat
...
a
...
on
...
suurempi
...
tai
...
yhtäsuuri
...
kuin
...
b
...
ja
...
c
...
on
...
pienempi
...
kuin
...
d");
...
if valinta voidaan tehdä monen vaihtoehdon välillä:
if(ehto1) lauseke1;
else if (ehto2) lauseke2;
else if (ehto3) lauseke3;
else lauseke4; //tämä toteutetaan jos mikään ehto ei ole tosi
Lauseke1 voi koostua yhdestä käskystä tai {} sulkujen sisällä olevasta ohjelmalohkosta (sulkulauseke voi olla myös tyhjä).
Alistettuja if-lauseita käytetään usein tehokkaan ohjelmoinnin yhteydessä:
if
{ if(j) lauseke1; if(k) lauseke2; else lauseke3; }
else lauseke4;
_displayNameOrEmail_ - _time_ - Poista
_text_