Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

10.13.1 || ei toimi switch - lauseessa!

On huomattava, että jos halutaan suorittaa jokin switch- lauseen osista kahdella eri arvolla, EI voida käyttää rakennetta:

	switch (operaatio) {  /* VÄÄRIN: */ 	
	  case 4 || 5: x *= 2; break;  /*    5 tai  4 laskee x=2*x       */ 	:-(
	  case 3: x += 2;              /*           3 laskee x=x+4       */
	  case 2: x++;                 /*           2 laskee x=x+2       */ 
	  default: x=0; break;         /* Muut nollaavat x:än            */
	}

Kääntäjä ei tästä varoita, koska kaikki on aivan kieliopin mukaista. 4 || 5 on kahden loogisen lausekkeen OR eli 1 || 1 eli 1. Siis

	case 4 || 5:
	on sama kuin
	case 1: 

Jos esimerkistämme ei olisi poistettu lausetta case 1: , olisi kääntäjä varoittanut koska 1 olisi esiintynyt kahdesti.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys