Eventuali duplicati:
Why can't variables be declared in a switch statement?
How can a variable be used when its definition is bypassed?Qualcuno può spiegare l'output di questo programma C?
#include<stdio.h>
int main()
{
int a=1;
switch(a)
{ int b=20;
case 1: printf("b is %d\n",b);
break;
default:printf("%d\n",b);
break;
}
return 0;
}
corse su gcc 4.6.3, uscita non 20. Che cosa sta succedendo qui?
Ma la variabile b è dichiarata come 20, il compilatore sa quanta variabile di spazio occuperà e cosa memorizzerà lì. Perché allora il comportamento è indefinito? – Anon
@Anon: non fa parte di un'etichetta. –
capito, grazie. – Anon