Uvjetni operator
1. Uvjetni operator
U programskom jeziku C definiran je i uvjetni operator ? koji može zamijeniti jednostavnije oblike naredbe if. Sintaksa mu je:
(uvjet)? naredba_1:naredba_2;
gdje su naredba_1 i naredba_2 aritmetički izrazi ili funkcije.
Ako je uvjet istinit, izvršava se naredba_1, a u suprotnom naredba_2. Uvjetni operator koristi se samo za jednostavna ispitivanja kada naredba stane u jednu liniju, a zamjenjuje niz naredbi:
if (uvjet)naredba_1;
else
naredba_2;
Pogledajmo nekoliko primjera.
a) Ispišite veći od dvaju učitanih brojeva.
(a>b)? printf("Veci je %d",a): printf("Veci je %d",b);
b) Je li učitani broj paran ili neparan?
(a%2)? printf("Neparan"): printf("Paran");
c) Od većeg broja oduzmite manji.
(a<b)? r=b-a : (r=a-b);
Primijetite da je naredba iz dvotočke u zagradi. To je zato što je to složena naredba (sadrži i operator pridruživanja). Taj primjer možemo još malo skratiti, ako uzmemo u obzir činjenicu da je naredba pridruživanja najnižeg prioriteta:
r = (a<b)? b-a: a-b;
Cijeli bi zadatak iz primjera a) onda izgledao ovako.
#include <stdio.h>
int main()
{
int a,b;
printf("Upisite dva broja: ");
scanf("%d %d",&a,&b);
(a<b)? printf ("\nVeci je %d",b) : printf ("\nVeci je %d",a);
return 0;
}
Primjer 1.
Koje vrijednosti poprimaju varijable x, y i z u programu nakon izvođenja sljedećih dijelova programa?
int x=2,y,z=4;
y=(x<z)?(z++) : (x-z++);
b)
int x=9, y=3,z;
z=(x%y)?++x : (y+=x--);
Rješenje
a) x = 2, y = 4, z = 5
b) x = 8, y = 12, z = 12