首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言經典考題解析:條件判斷、嵌套if、switch穿透

     編輯:C 語言問答

三道弱弱題目深度解析

題目一:條件表達式值


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。

題目二:懸空else與嵌套if


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。

題目三:switch 穿透與條件表達式作 case


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("#");
    }
}
// 輸出: *#

解析:

  1. switch(x) → case 0 匹配
  2. switch(y==2):y==2 為關係表達式,值為 1
  3. 內層 case 1 匹配 → 印 * → break 跳出內層 switch
  4. 外層 無 break,穿透到 case 1
  5. switch(z):z=3,無 case 3,執行 default → 印 #
  6. 外層 case 1 結束,程式結束

核心知識點總結

  • 關係/邏輯表達式值:真=1,假=0,類型為 int
  • else 匹配最近的 if,用大括號消除歧義
  • switch 默認穿透,需 break 跳出
  • case 後可跟常量表達式(含關係表達式結果)
  • default 可放任意位置,通常放最後
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved