以下 C++ 程式執行後,輸出為何?
告 考
#include <iostream>
using namespace std;
int f331(int&y) {return ++y;}
int f332(int&y) {return y++;}
int main() {
int x = 7;
cout << f331(x) << " "<< x << " "<< f332(x);
}
A9 8 7正確答案
B8 7 8
C7 7 8
D8 8 9
以下 C++ 程式執行後,輸出為何?
#include <iostream>
using namespace std;
int main() {
int a = 7;
auto lambda = [=]() mutable {a++; return a;}
cout << lambda () << " " << a;
答案與詳解
A
正確答案
本題官方答案為 (A)。命題脈絡基於舊版編譯器由右至左計算 cout 引數的順序,結合前置與後置遞增運算子的特性得出 9 8 7。惟本題題幹疑似誤接他題且現代 C++ 標準求值順序已變更,詳見答案效力說明。
逐選項解析
A9 8 7✓ 正確
B8 7 8✕ 錯誤
數值組合錯誤,無法對應任何合理的求值順序與遞增運算子邏輯。
C7 7 8✕ 錯誤
數值組合錯誤,若誤認 f331 為後置遞增且由右至左求值可能產生類似錯覺,但與題旨不符。
D8 8 9
以下 C++ 程式執行後,輸出為何?
#include <iostream>
using namespace std;
int main() {
int a = 7;
auto lambda = [=]() mutable {a++; return a;}
cout << lambda () << " " << a;✕ 錯誤