12.【表 12】之 C++程式片段執行後,a 值為何?
(A) -1
(B) 0
(C) 1
(D) 2
答案:登入後查看
統計: A(0), B(11), C(12), D(0), E(0) #3276879
統計: A(0), B(11), C(12), D(0), E(0) #3276879
詳解 (共 2 筆)
#7492798
1. 初始狀態
- int x = 0, y = 0, z = 0;
- 在記憶體中配置三個整數變數 x、y、z,其初始值皆為 0。
2. 表達式解析與求值:((x+y+z) == (-1*-y))
此敘述核心在於比較運算子 == 左右兩側子表達式(Sub-expression)的計算結果:
- 左側子表達式 (x+y+z):
- 代入變數值:0 + 0 + 0
- 求值結果為整數 0。
- 右側子表達式 (-1*-y):
- 首先處理一元負號運算子(Unary Minus)-y:因 y = 0,故 -0 仍為 0。
- 接著執行乘法運算(Multiplication):-1 * 0
- 求值結果為整數 0。
3. 關係運算子求值與賦值
- 等值比較 ==:
- 將左側結果(0)與右側結果(0)進行等值比較,即 0 == 0。
- 根據 C++ 標準規範,此關係表達式的邏輯條件成立(True),其求值結果為布林型態(bool)的 true。
- 隱式型態轉換與賦值(Implicit Conversion & Assignment):
- 在將布林值 true 賦值給整數型態(int)變數 a 時,會觸發標準轉換(Standard Conversion)。
- 布林值 true 會被隱式轉換為整數 1(若為 false 則轉換為 0)。
- 因此,變數 a 的記憶體狀態被寫入數值 1。
0
0