Uvod u C   Autor: Milan Miščević
 
Jezik
Istorijat
C++
Kompajler
Razvojni ciklus
Hello.c
Greške
Komentari
Varijable
Printf i scanf
Include i main
Zbir.c
Konstante
Naredbe i izrazi
Operatori I
Zadaci I nivo
Operatori II
If/else
Zadaci II nivo
For
Zadaci III nivo
While
Zadaci IV nivo
Funkcije
Zadaci V nivo
Nizovi
Zadaci VI nivo
Zadaci
Rječnik
Literatura

abc C
  Operatori (eng. Operator) je simbol koji daje računaru instrukciju da izvrši neku operaciju. Operatori se dijele na operator pridruživanja, matematičke operatore, relacione operatore i logičke operatore.

Operator pridruživanja

Operator pridruživanja je znak jednako (=). Upotrebljava se u sledećem obliku:
      varijabla = izraz;
On pridružuje vrijednost izraza sa lijeve strane varijabli sa desne strane.

Matematički operatori

U matematici ove operatore ste zvali znakovima matematičkih operacija. Matematički operatori se dijele na operatore sa jednim izrazom i operatore sa dva izraza.

Operatori sa jednim izrazom

Operatori sa jednim izrazom (eng. Unary Operator) su operator uvećavanja i operator umanjivanja. Operator uvećavanja (eng. Increment) (++) uvećava vrijednost izraza uz kojeg stoji za jedan i pridružuje mu novu vrijednost.
      int broj = 5;

      printf("%d ", broj);
      broj++;
      printf("%d", broj);
Izlaz na ekranu:
      5 6
Operator umanjivanja (eng. Decrement) (--) umanjuje vrijednost izraza uz kojeg stoji za jedan i pridružuje mu novu vrijednost.
      int broj = 5;

      printf("%d ", broj);
      broj--;
      printf("%d", broj);
      5 4
      broj++;
      broj--;
je, ustvari, isto što i
      broj = broj + 1;
      broj = broj - 1;
Operatori uvećavanja i umanjivanja se mogu upotrijebiti kao sufiksi (primjeri gore) i kao prefiksi. Razliku najbolje ilustruje sledeći primjer:
      #include <stdio.h>

      int x, y;

      main()
      {
              x = 5;
              y = 5;

              printf("%d - %d\n", x, y);
              printf("%d - %d\n", x--, --y);
              printf("%d - %d", x, y);

              return 0;
      }
      5 - 5
      5 - 4
      4 - 4
Ako je operator upotrebljen kao prefiks, on "operiše" izraz prije njegove upotrebe. Ako je operator upotrebljen kao sufiks, on "operiše" izraz poslije njegove upotrebe.

Operatori sa dva izraza

Operatori sa dva izraza (eng. Binary Operator) su operator sabiranja (+), operator oduzimanja (-), operator množenja (*), operator dijeljenja (/) i operator ostatka (%).
      zbir = 3 + 5;        /* Zbir je 8.      */
      razlika = 43 - 23;   /* Razlika je 20.  */
      proizvod = 5 * 6;    /* Proizvod je 30. */
Za razliku od matematike, dijeljenje je malo drugačije, a ostatak je nešto novo.
      kolicnik1 = 40 / 8;   /* Kolicnik1 je 5. */
      kolicnik2 = 45 / 7;   /* Kolicnik2 je 6. */
      ostatak = 45 % 7;     /* Ostatak je 3.   */
U C-u dijeljenje je matematička operacija u kojoj je rezultat cijeli broj bez ostatka ili decimala. Rezultat operacije ostatka je cijeli ostatak. Pogledajte sledeći primjer, koji na najbolji način ilustruje osnos djeljenika, djelioca, količnika i ostatka dijeljenja.
      #include <stdio.h>

      int djeljenik, djelilac, kolicnik, ostatak, suma;

      main()
      {
              djeljenik = 45;
              djelilac = 7;

              kolicnik = djeljenik / djelilac;
              ostatak = djeljenik % djelilac;

              printf("Kolicnik je %d.\n", kolicnik);
              printf("Ostatak je %d.\n", ostatak);

              suma = (kolicnik * djelilac) + ostatak;
              /* Isto je i bez zagrada. */

              printf("Suma je %d.\n", suma);

              return 0;
      }
      Kolicnik je 6.
      Ostatak je 3.
      Suma je 45.
Red matematičkih operacija

U složenim izrazima postoje operacije koje imaju prednost izvršavanju u odnosu na druge. U tabeli je prikazan redoslijed.

Izvršavaće se Operatori
prvi ++ --
drugi * / %
treći + -

Tako rezulatat sledećeg koda nije 48, već 33.
      rezultat = 3 + 5 * 6;
Ako izraz ima više operatora od iste važnosti, onda se izvršavaju poredu, slijeva nadesno. No, redoslijed se može uvjek promjeniti običnim zagradama, (), jer se riješava prvo ono u zagradi, pa te onda ono van. Pravilo za zagrade ne važi samo za matematičke operatore, već važi za sve operatore.
      int inc = 5;

      rezultat = (2 * ++inc) * (2 + 3);
      printf("Rezultat je %d.", rezultat);
      Rezultat je 60.
Savjetujem da češće koristite zagrade, jer time je kod čitljiviji, a manja je mogućnost da se dobije pogrešan rezultat zbog pogrešnog reda operacija.

Kombinovani operatori

Kao što i ime kaže, ovi operatori su kombinovani od jednog matematičkog operatora i operatora pridruživanja. Upotrebljavaju se u sledećem obliku:
      izraz1 operator= izraz2
što predstavlja isto kao
      izraz1 = izraz1 operator izraz2
Primjer:
      #include <stdio.h>

      int suma, cijena;

      main()
      {
              suma = 100;
              cijena = 23;

              suma += cijena;
              /* suma = suma + cijena */

              printf("Suma je %d.", suma);

              return 0;
      }
      Suma je 123.
Sledeće tri naredbe uvećavaju, odnosno umanjuju, vrijednost varijable x za jedan:
      x = x + 1;
      x++;
      x += 1;
      x = x - 1;
      x--;
      x -= 1;
Preporuka: Do sada ste stekli toliko znanja da samostalno možete početi stvarati jednostavnije aplikacije. Ovdje možete pronaći pripremljene zadatke za vježbanje.

Naredbe i izrazi - Zadaci I nivo