【发布时间】:2012-03-13 14:50:26
【问题描述】:
如何处理 switch-case 块中任何 case 标记语句之前的语句。
请解释以下程序的行为
程序1:
#include<stdio.h>
int main()
{
switch(1)
{
int i=0;
case 1:printf("%d",i);
}
getchar();
return 0;
}
输出:垃圾值。
程序2:
#include<stdio.h>
int main()
{
switch(1)
{
printf("Inside Switch");
case 1:printf("Case 1\n");
}
printf("Outside Switch");
getchar();
return 0;
}
输出:
案例一
外部开关。
根据程序 2,标记为 case 的语句之前的语句似乎无法访问,但是为什么我在第一个程序中没有收到未声明变量 i 的错误(仅警告)。
如果有人能详细解释switch 语句在内部是如何处理的,那将非常有帮助。
【问题讨论】:
-
这是作业吗?这听起来像家庭作业。如果是这样,请添加
homework标签并展示您迄今为止的工作。 -
@T.J.Crowder 这不是家庭作业。我在参加 gild 的 C 测验时遇到了这个问题,我很想知道。
-
switch语句基本上是带有gotos 的跳转表的语法糖。 -
您是否尝试过使用相同的编译器在 switch 范围之外编译未声明变量的使用?它输出什么?也许这取决于编译器的警告/错误设置?在这里:cprogramming.com/tutorial/lesson5.html
-
@TheNail 我确实尝试过。但它给出了一条错误消息。
标签: c switch-statement