Как обрабатываются утверждения, идущие перед любым утверждением с меткой case
в блоке switch-case
.
Объясните, пожалуйста, поведение следующих программ
prog1:
#include<stdio.h>
int main()
{
switch(1)
{
int i=0;
case 1:printf("%d",i);
}
getchar();
return 0;
}
Выход: мусорное значение.
prog2:
#include<stdio.h>
int main()
{
switch(1)
{
printf("Inside Switch");
case 1:printf("Case 1\n");
}
printf("Outside Switch");
getchar();
return 0;
}
Выход:
Case 1
Внешний переключатель.
Операторы перед оператором с меткой case кажутся недостижимыми согласно программе 2, но тогда почему я не получаю ошибку для необъявленной переменной i
в первой программе (только предупреждение).
Было бы очень полезно, если бы кто-нибудь мог подробно объяснить, как оператор switch
обрабатывается внутри программы.