【发布时间】:2014-01-29 09:34:15
【问题描述】:
我的一个朋友刚刚开玩笑说这在 C 中是可能的,我的回答是:不可能。事实证明这是可能的,并且可以在没有任何警告的情况下编译。
#include "stdio.h"
int main(){
int x = 1;
switch(x) {
case 1:
printf("1\n");
while(1) {
case 2:
printf("bad 2\n");
}
break;
default:
printf("default\n");
break;
}
}
将 x 设置为 1 或 2 会导致无限循环一直打印 bad 2。
为什么?这是怎么回事,这怎么合法???
我正在使用 GCC 4.8.2、Windows、-std=c99 ...
编辑:这个问题是关于为什么它是合法的,如果它是合法的,以及从什么时候开始。例子很好,但不是我的问题的目标。我想知道,在任何地方放置 case 标签是有意识的 C 设计,还是意外,还是抽象/实现细节泄漏?
【问题讨论】:
-
噢,达夫,你去哪儿了?
标签: c gcc switch-statement c99