7.【表 7】之 C++程式片段執行後,螢幕將顯示什麼結果?
(A) 9, 10
(B) 10, 9
(C) 9, 9
(D) 10, 10
答案:登入後查看
統計: A(1), B(10), C(1), D(12), E(0) #3276874
統計: A(1), B(10), C(1), D(12), E(0) #3276874
詳解 (共 2 筆)
#7492796
1. 初始狀態
- int x = 10;
- 在記憶體中配置整數變數 x,其初始值為 10。
2. 第一道輸出敘述:cout << -- x + 1 << ",";
此處涉及兩個運算子:前置遞減(Prefix Decrement, --x) 與 加法(Addition, +)。
- 優先權分析:單目運算子(Unary Operator)-- 的優先權(Precedence 3)高於雙目運算子 +(Precedence 6)。因此,此表達式被解析為 (--x) + 1。
- 前置遞減行為:--x 會立即修改變數 x 於記憶體中的狀態(產生副作用)。
- x 的值由 10 遞減為 9。
- 該表達式 --x 的求值結果為左值(L-value)9。
- 加法運算:接著執行加法 9 + 1,求值結果為純右值(prvalue)10。
- 輸出結果:第一道 cout 輸出 10,並接續輸出逗號 ,。
- 當前記憶體狀態:x 的數值此時為 9。
3. 第二道輸出敘述:cout << x++;
此處涉及 後置遞增(Postfix Increment, x++) 運算子。
- 後置遞增行為:根據 C++ 標準規範,後置運算子會先傳回該變數當前的副本(即未修改前的值)作為表達式的求值結果,隨後(在下一個序列點之前)再將記憶體中的變數值加 1。
- 表達式求值:此時 x 的值為 9,因此 x++ 表達式求得的純右值為 9。
- 輸出結果:第二道 cout 輸出 9。
- 副作用觸發:輸出指令執行完畢後,x 的記憶體數值遞增為 10(但此時已完成輸出,不影響結果)。
ㅤㅤ
0
0