我的一個朋友剛剛開玩笑說,這可能在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;
}
}
設置在無限循環中打印bad 2
所有的時間x
1或2的結果。
爲什麼?這是怎麼回事,這甚至是合法的?
我使用GCC 4.8.2,Windows中,-std=c99
...
編輯:這個問題是關於爲什麼是合法的,如果是合法的,因爲當。例子很好,但不是我的問題的目標。我想知道,如果整個case
標籤的放置都是有意識的C設計,或者是意外事故,或者泄漏的抽象/實現細節泄露?
哦達夫,你在哪裏? –