hce_nsysu
112年
計算機概論與程式設計
第 1 題
What is printed by the following C/C++ program?
char a[ ]= "ABCDE", b[ ]= "74623";
printf("%d \n", (a[4]-a[1])+(b[4]-b[1]));
char a[ ]= "ABCDE", b[ ]= "74623";
printf("%d \n", (a[4]-a[1])+(b[4]-b[1]));
- A 2
- B 3
- C 4
- D 5
- E 6
思路引導 VIP
如果在程式中看到 'D' - 'A',你認為計算機背後是利用什麼樣的數值標準來進行這項數學運算的?另外,如果我們把相減的順序對調(小的減去大的),這對最後的加總結果會有什麼影響?
🤖
AI 詳解
AI 專屬家教
恭喜你!精準地抓住了 C 語言中字元運算的精髓。這題你能答對,代表你對字元陣列的索引(Index)以及字元在記憶體中以 ASCII 碼 形式儲存的本質有著非常清晰的理解。
字元相減與 ASCII 值的應用
在 C/C++ 中,當我們對字元進行減法運算時,編譯器實際上是拿它們對應的整數數值進行計算。針對陣列 a,其內容為 "ABCDE",因此 a[4] 是 'E' 而 a[1] 是 'B',計算結果為字元間的相對距離:$69 - 66 = 3$。接著處理陣列 b 時,千萬不能因為它看起來是數字就大意,b[4] 為 '3',b[1] 為 '4',計算結果為 $51 - 52 = -1$。最終兩部分加總:$3 + (-1) = 2$,這就是為何選項 (A) 是正確的。
▼ 還有更多解析內容