#include <iostream>
using namespace std;
void main() {
int a = 15, b = 26;
cout << (a, b) << endl; // 輸出 26
cout << a, b; // 輸出 15
}
26
15
cout << (a, b)(a, b) 是逗號運算式:先求值 a(丟棄),再求值 b,**整個運算式的值是 b (26)**。cout << 26,輸出 26。cout << a, b<< (左移/流插入) > , (逗號)**。(cout << a), b:cout << a → 輸出 15,返回 cout 引用;b(值 26,但被丟棄,無副作用)。| 優先級 | 運算子 | 結合性 |
|---|---|---|
| 高 | << (流插入) | 左→右 |
| 低 | , (逗號) | 左→右 |
{ expr1; expr2; } 塊。<< 是重載函式,**重載不改變優先級與結合性**——這是 C++ 標準保證的。cout << a, b 之所以只輸出 a,是因為 << 優先級高於逗號,導致逗號右側的 b 成為獨立運算式被忽略。加上括號 cout << (a, b) 則先執行逗號運算式取得 b 再輸出。