一段C程式請高人
- 2022-09-15
分析了下,如果輸入2473, 得到的應該是66877。 不知道你的668977怎麼得到的。
還有case X後面跟的是冒號,不是分號。
分析如下:
1。 c=getchar(): c是int型別, getchar()輸入的是一個字元,但賦給的是c的此字元的ASCII碼。
2。 switch(c-‘2’): ‘2’是字元型別,它們相減有個隱式轉換, ‘2’被轉換成ASCII碼了,它們兩個是ASCII之間的相減。但可以簡單理解成, 兩個數字之間差多少位,因為數字的ASCII是連續的。
3。 break: switch中case後面跟的break是指跳出swith語句,不斷續往下執行了。這個關鍵,你要問的也是這個。 你看下面的執行步驟就明白了。
3。1 輸入2
3。2 2-2得到的是:0
3。3 執行的是:
case 0 :;
case 1 :;putchar(c+4);
case 2 :;putchar(c+4);break;
3。4 顯示:66
3。5 輸入4
3。6 4-2得到的是:2
3。7 執行的是:
case 2 :;putchar(c+4);break;
3。8 顯示:8
3。9 輸入7
3。10 7-2得到的是:5
3。11 沒有執行語句。
3。12 不顯示
3。13 輸入3
3。14 3-2得到的是:1
3。15 執行語句:
case 1 :;putchar(c+4);
case 2 :;putchar(c+4);break;
3。16 顯示:77
你好好看上面的分析吧。
難得寫這麼多,哈哈~