首頁 >後端開發 >C++ >為什麼 `cout 的輸出是

為什麼 `cout 的輸出是

Linda Hamilton
Linda Hamilton原創
2024-12-12 15:10:19683瀏覽

Why is the Output of `cout

cout 的未定義輸出

在程式碼片段中:

int a = 0;
cout << a++ << a;

通常假設該行為相當於:

cout << (a++) << a;

但是,由於缺乏函數參數求值之間的序列點,不保證執行順序。編譯器可能會評估 std::operator<<<>(std::cout, a ) 之前或之後的值。

因此,正確的解釋是:

cout << ((a++) << a);

這表示結果是undefined,因為在第二次呼叫中使用了增量後的a 值運算符<<<>。

C 17 修正案

在C 17 中,規則已修改為:

E1 << E2

評估為:

std::operator<<<>(std::operator<<<>(E1, E2), E3)

評估為:評估為:評估為:評估為: 具有E1的所有副作用在E2之前定序。這確保了程式碼片段現在產生預期的輸出“01”。

以上是為什麼 `cout 的輸出是的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn