Hopp til innhold

C/Aritmetiske operasjoner og operatører

Fra Wikibøker – frie læremidler
< C

C har en rekke operatører for å gjøre aritmetiske, dvs. matematiske, operasjoner. Disse fungerer stort sett slik du er vant med fra matematikken:

+		- addisjon
-	- subtraksjon
*	- multiplikasjon
/	- divisjon
%	- modulus (rest av divisjon)

Hver operatør tar nøyaktig to argument og returnerer eller evaluerer til en verdi som representerer det originale uttrykket. Se f.eks. på denne koden, som bør være lett å forstå:

int x = 5 * 5

Her kjøres først 5 * 5 som blir 25. Vi sier at 5 * 5 evaluerte til 25 og returnerte den verdien til tilordningsoperatøren =, som tilordnet 25 til variabelen x. Grunnen til at multiplikasjonen skjedde først er logisk nok fordi det må være slik for at slike uttrykk skal fungere. Den tekniske årsaken er at = har lavere prioritet enn * -- den evalueres etter *.

Akkurat som i matematikken har *, / og % høyere prioritet enn + og -. Samtidig har parantesoperatøren, (), høyere prioritet enn dem igjen. Dermed vil matematiske uttrykk kunne skrives veldig likt i C.

Aritmetiske uttrykk blir alltid evaluert før et funksjonskall. Dermed blir følgende printf-uttrykk mulig:

printf("2 + 2 er %d.", 2 + 2);

Her blir altså 2 + 2 evaluert før funksjonskallet til printf -- printf blir altså kalt med 4 som andre argument.

C har også en rekke matematiske funksjoner som sin, log og pow, bare for å nevne noen. Sistnevnte opphøyer et tall i et annet: pow(3, 2) er det samme som det matematiske uttrykket 3².


Forenklede operatører[rediger]

Noen kodelinjer er så vanlige at man i C har forkortet dem til egne operatører (såkalt "syntactic sugar"):

Oper.	Beskrivelse    			Samme som

++	inkrementering			x = x + 1
--	dekrementering			x = x - 1
+=	addere og tilordne		x = x + n
-=	subtrahere og tilordne		x = x - n
*=	multiplisere og tilordne	x = x * n
/=	dividere og tilordne		x = x / n
%=	modulere og tilordne		x = x % n

I stedet for å skrive x = x + 120 trenger vi altså bare å skrive x += 120. Det kan kanskje virke som om det har lite for seg, men denne forenklingen vil du nok sette pris på senere.

Det finnes mange flere operatører enn disse, men de får komme etter hvert.