int a = 100;
if (a > 100) printf("%d\n", a > 100);
else printf("%d\n", a <= 100);
// 輸出 1
解析:a <= 100 是關係表達式,值為 1(真)。C語言中關係/邏輯表達式結果類型為 int,真為 1,假為 0。printf("%d", a<=100) 印出表達式的值 1。
int a=2, b=-1, c=2;
if (a < b)
if (b < 0) c = 0;
else c += 1;
printf("%d\n", c); // 輸出 2
解析:else 匹配最近的未匹配 if。縮進誤導人,實際結構:
if (a < b) {
if (b < 0) c = 0;
else c += 1; // 屬於內層 if
}
a < b (2 < -1) 為假,整個外層 if 不執行,c 保持初值 2。
int x=0, y=2, z=3;
switch(x) {
case 0: switch(y==2) { // y==2 值為 1(真)
case 1: printf("*"); break;
case 2: printf("%"); break;
}
case 1: switch(z) {
case 1: printf("$");
case 2: printf("*"); break;
default: printf("#");
}
}
// 輸出: *#
解析:
switch(x) → case 0 匹配switch(y==2):y==2 為關係表達式,值為 1case 1 匹配 → 印 * → break 跳出內層 switchcase 1switch(z):z=3,無 case 3,執行 default → 印 #case 1 結束,程式結束else 匹配最近的 if,用大括號消除歧義switch 默認穿透,需 break 跳出case 後可跟常量表達式(含關係表達式結果)default 可放任意位置,通常放最後