33.若已宣告「int i,j=10;」,則程式中指令「i= ++j + 20*8 >> 1%6」執行完 i 的值為何?
(A) 17
(B) 85
(C) 15
(D) 16

答案:登入後查看
統計: A(2), B(6), C(1), D(1), E(0) #3276900

詳解 (共 2 筆)

#6958603

先看哪個運算子先算:

* / % 優先於 +,
+ 又優先於 >>,
所以順序是:
先乘除取餘 → 再加法 → 再位移。

初始:j = 10

(1) ++j

→ j 變成 11,++j 的值是 11。

(2) 找出 % 部分

因為 % 和 * 同級,左至右:

++j + 20 * 8 >> 1 % 6

依結合方向左至右,
先處理 20 * 8,再 >>,再 %。

但注意!在 C 語言中:

位移運算子 >> 的優先級 低於加法、高於比較
比 % 還低

所以實際分組是:

ㅤㅤ
i = (++j + 20 * 8) >> (1 % 6); 

1️⃣ ++j → 11
2️⃣ 20 * 8 = 160
3️⃣ ++j + 20 * 8 = 11 + 160 = 171
4️⃣ 1 % 6 = 1
5️⃣ 171 >> 1 → 右移 1 位,相當於除以 2
 → 171 / 2 = 85(整數截去小數)

結果:

i = 85 j = 11
1
0
#6920932
1. 題目解析 題目中給出的程式碼是 ...
(共 932 字,隱藏中)
前往觀看
0
0