int i,j=0;
for(i=0;i<N;i++){
switch(i){
case 0:
case 1: if(i<1) break; i=123;
case 456: j=666; break;
default: j=777;
}
if(j==666) break;
}
printf("%i %i\n",i,j);
我想問一下在這種情況下switch語句的正確縮進情況。據我瞭解,Switch Statement - 斷線後正確縮進的線
case 0:
case 1: if(i<1) break; i=123;
相當於
case 0: case 1:{
if(i<1){
break;
}
i=123;
}
不過,我不case 1
突破後瞭解i=123
。我也曾嘗試用不同的N
值玩耍,發現只要N>=2
我總是會得到的
的輸出,但我沒有看到的i
價值如何到達456
以便case 456
被觸發。
C中的縮進並不重要(對於編譯器),因此要求「正確」縮進本質上是詢問個人偏好 – UnholySheep
您可能想看看['-Wimplicit-fallthrough'](https:// gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Warning-Options.html#Warning-Options)選項添加到GCC 7.1 - 您將不得不搜索它。或者再次,也許這超出了你現在準備處理的範圍,但它在未來的某個時間可能會有用。請注意,在C語言中,控制流程在'case'標籤之間繼續,除非有'break'(或者如果有周圍循環,或者返回,或者goto或者其他任何控制轉移, longjmp()','exit()'或其他任何'不返回'函數)。 –