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

為什麼 `cout 的輸出是

Linda Hamilton
發布: 2024-12-12 15:10:19
原創
680 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板