Professional Documents
Culture Documents
OPERATORI I IZRAZI
Unarni operatori deluju samo na jedan operand i mogu biti prefiksni kada se
navode pre operanda i postfiksni kada se navode nakon svog operanda.
Binarni operatori imaju dva operanda i obično su infiksni tj.navode se između
svojih operanda
U jeziku C postoji jedan ternarni operator koji se primenjuje na tri operanda.
ARITMETIČKI OPERATORI
Binarni operatori + i – imaju isti prioritet, koji je niži od prioriteta operatora *, / i %, a koji
opet imaju niži prioritet od unarnih operatora + i -.
3 – (-2) = 5
Celobrojno deljenje odbacuje sve decimale, dok izraz X % Y daje ostatak pri deljenju X sa
Y, a jednak je nuli ako je X deljivo sa sa Y.
#include <stdio.h>
main()
{
int a, b;
printf("Unesi prvi broj : ");
scanf("%d",&a);
printf("Unesi drugi broj : ");
scanf("%d",&b);
#include <stdio.h>
main()
{
int a = 5;
int b = 2;
int d = 5/2; /* Celobrojno deljenje - rezultat je 2 */
float c = a/b; /* Iako je c float, vrsi se celobrojno deljenje jer su i a i
b celi */
printf("c = %f\n",c);
printf("Uzrok problema : 5/2 = %f\n", 5/2);
printf("Popravljeno : 5.0/2.0 = %f\n", 5.0/2.0);
printf("Moze i : 5/2.0 = %f i 5.0/2 = %f \n", 5/2.0, 5.0/2);
printf("Za promenljive mora kastovanje : %f\n", (float)a/(float)b);
}
Nad celim brojevima i brojevima u pokretnom zarezu mogu se koristiti sledeći binarni
relacioni operatori:
== jednako
!= različito
> veće
>= veće ili jednako
< manje
<= manje ili jednako
Relacioni operatori >,>=, <,<= imaju isti prioritet, dok odmah ispod njih su operatori
jednako: == i !=.
Relacioni operatori imaju niži prioritet od aritmetičkih operatora, pa se izraz i<lim-1 tretira
kao i<(lim-1), što je i očekivano.
Operator == koji ispituje da li su neke dve vrednosti jednake i operator dodele = različiti
su operatori i imaju potpuno drugačiju semantiku. Njihovo nehotično mešanje čest je uzrok
grešaka u C programima.
LOGIČKI OPERATORI
Logički operatori primenjuju se nad brojevnim vrednostima i imaju tip rezultata int.
Brojevnim vrednostima pridružene su logičke ili istinitosne vrednosti na sledeći način:
Ukoliko je broj jednak 0, onda je njegova logička vrednost 0 (netačno), a inače je njegova
logička vrednost 1 (tačno).
Iako su sve vrednosti operanada koje su različite od 0 dopuštene i tumače se kao tačno,
rezultat izračunavanja tačno nije proizvoljna vrednost različita od 0, već isključivo vrednost 1.
! Logička negacija – ne
&& Logička konjukcija – i
|| Logička disjukcija – ili
Izrazi povezani ovim operatorima && i || računaju se sleva nadesno, računanje se prekida
čim se ustanovi istinitost rezultata. Mnogi C programi koriste ova svojstva.
Operator && ima viši prioritet u odnosu na operator ||, a oba su levo asocijativna.
Izraz a>b || b>c && b>d ekvivalentan je izrazu (a>b) || ((b>c) && (b>d)).
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int godina;
printf("Unesite godinu: ");
scanf("%i" , &godina);
main() {
/* Rezultat primene relacijskih operatora su logicke vrednosti koje
se predstavljaju vrednoscu nula i nekom vrednoscu razlicitom od
nule (najcesce je to 1) */
printf("5<3 - %d\n5>3 - %d\n3==5 - %d\n3!=5 - %d\n", 5<3, 5>3, 3==5,
3!=5);
Razlika između ova dva oblika je u tome što ++n uvećava vrednost promenljive n pre nego što je
ona upotrebljena u širem izrazu, a n++ je uvećava nakon što je upotrebljena.
Primer:
x = n++;
x = ++n;
dodeljuje promenljivoj x vrednost 11. Promenljiva n u oba slučaja dobija vrednost 11. U sledećem
primeru prikazano je korišćenje prefiksnih i postfiksnih operatora-
Ako on ima ne-nula vrednost (tj. ako ima istinitosnu vrednost tačno), onda se izračunava vrednost
izraza izraz2 i to je vrednost čitavog uslovog izraza. Inače se izračunava vrednost izraz3 i to je
vrednost čitavog uslovnog izraza.
Primer:
m = (a>b) ? a : b
m = (a < 0) ? –a : a
#include <stdio.h>
int main() {
int a = 3, b = 5;
printf("min(%d, %d) = %d\n", a, b, a < b ? a : b);
printf("max(%d, %d) = %d\n", a, b, a > b ? a : b);
}
DODATNI PRIMERI
#include <stdio.h>
int main()
{
char c;
re
Napisati program koji proverava da li je uneti broj paran ili neparan, prvo uraditi pomoću if
naredbe, a zatim sa operatorom uslova:
#include <stdio.h>
int main()
{
int n;
if (n%2 == 0)
printf("Paran\n");
else
printf("Neparan\n");
return 0;
}
#include <stdio.h>
int main()
{
int n;
return 0;
}