previous next Up Title Contents Index

10.9.3 Lisäysoperaattori ++

Erittäin tyypillisiä C- operaattoreita ovat ++ ja- - .

Nämä operaattorit lisäävät tai vähentävät operandin arvoa yhdellä. Operandin tyypin tulee olla numeerinen tai osoitin.

Operandeista on kaksi eri versiota: esilisäys ja jälkilisäys.

lyhenne

vastaa lauseita
a = i++;

a = i--

a = ++i;

a = --i;

a = i; i = i+1;

a = i; i = i-1;

i = i+1; a = i;

i = i-1; a = i;

Vaikka C- hakkerit rakentavatkin mitä ihmeellisimpiä kokonaisuuksia ++ - operaattorin avulla, kannattaa operaattorin liikaa käyttöä välttää. Esimerkiksi lauseet joissa esiintyy samalla kertaa useampia lisäyksiä samalle muuttujalle, saattavat olla jopa määrittelemättömiä:

c-silm\plusplus.c - esimerkki ei-yksikäsitteisestä ++ operaattorin käytöstä

	#include <stdio.h>
	int main(void)
	{
	  double i=1.0,a;
	  a = i++/i++;
	  printf("a = %5.2lf, i = %5.2lf\n",a,i);
	  return 0;
	}
Ohjelma saattaa C- kääntäjän toteutuksesta riippuen tulostaa mitä tahansa seuraavista a:n ja i:in kombinaatioista:
	a: 0.5 1.0 2.0
	i: 2.0 3.0
Aluksi ++ - operaattoria kannattaa ehkä käyttää vain yksinäisenä lauseena lisäämään (tai vähentämään) muuttujan arvoa.
	i++;
Lisäysoperaattoria EI PIDÄ käyttää seuraavissa tapauksissa:
1.
Muuttuja johon lisäysoperaattori kohdistuu, esiintyy samassa lausekkeessa useammin kuin kerran.
1.
Makrojen kutsuissa.
1.
Myös funktioiden kutsut ovat vaarallisia, koska funktio saattaakin olla makro!
Kiellettyjä on siis esimerkiksi:
	a = ++i + i*i;
	b = MACRO(i- - );
	c = fun(++i,a,2*i); 


previous next Up Title Contents Index