File: Stare vježbe/vjezbe03/15__relacijski_logicki_operatori.c
/* 15__relacijski_logicki_operatori.c Relacijski (==, !=, <, <=, >, >=) i logicki (!, &&, ||) operatori Lijeno izvrednjavanje logickih izraza */ #include <stdio.h> int main() { /* u C-u ne postoji tip boolean koji bi poprimao vrijednost true ili false svaka vrijednost razlicita od 0 smatra se istinom (true), dok se 0 uzima kao laz Tako logicki i relacijski operatori vracaju vrijednost 0, ako bi rezultat operacije bio "false" 1, ako bi rezultat operacije bio "true" */ int a, b, c, d; scanf("%d%d%d", &a, &b, &c); /* ------ relacijski operatori ------ */ /* provjerimo je li a<b */ d=a<b; /* provjerimo je li a<=b */ d=a<=b; /* za testiranje jednakosti sluzi operator == (treba ga razlikovati od operatora = koji sluzi za pridruzivanje!!!) */ d=a==c; /* za testiranje ne-jednakosti sluzi operator != */ d=a!=c; /* uocimo da operator = ima manji prioritet od bilo kojeg relacijskog, tj. d=a==c je zapravo d=(a==c) */ /* ------ logicki operatori ------ */ /* Poredak po prioritetima: ! ----> logicki NOT && ---> logicki AND || ---> logicki OR */ d = a && b || c; /* A AND B OR C */ printf ("a && b || c : %d\n", d ); /* znacenje izraza d=a && b || c zapravo je ekvivalentno sa d=(a!=0) && (b!=0) || (c!=0) */ d = a || b && c; /* A OR B AND C <=> A OR (B AND C) */ printf ("a || b && c : %d\n", d ); d = !(a && !b && c); /* NOT ( A AND (NOT B) AND C) */ printf ("!(a && !b && c) : %d\n", d ); /* izvrednjavanje logickih operatora je lijeno, tj: a && b --> ako je vec a "false", b se niti ne racuna a || b --> ako je vec a "true", b se niti na racuna */ d=(a==a) || (b/0); d=(a!=a) && (b/0); return 0; }
|