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?

a)

      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