簡體   English   中英

這里的代碼解釋,c++中cout語句的輸出順序

[英]explanations of the code here, order of output in cout statement in c++

#include<iostream>
using namespace std;

int main(){

 char c = 'a';
 int numb;

 for (int i = 1; i <= 25 ; i++){

    cout << c <<   "," << c++ << endl;

 }

}

為什么當我打印上面的輸出時,會打印以下內容:

b,a

c,b

d,c

但我期待:

a,b

b,c

c,d

如果您沒有編譯到 C++17 標准修訂版或更近的版本,您就會遇到未定義的行為 較舊的 C++ 標准沒有指定順序

cout << c <<   "," << c++ << endl;

因此無法保證何時會出現該c++ 您唯一可以指望的是c++術語將是初始值,因為++在收集值后遞增。

a,a

或者

b,a

是有效的輸出。

從 C++17 開始,標准保證在繼續下一個<<之前將解決所有副作用。 << c將被解決,而不是有太多要解決的問題,在<< ","開始之前。 << c++在鏈中出現得更晚。 這意味着你應該總是看到

a,a 
b,b
c,c

請參閱評估順序底部關於未定義行為的說明

我相信這與這里的操作順序有關。 流運算符 ( << ) 從右到左操作。 這意味着在第一次運行中, c++計算結果為“a”,但導致c迭代到“b”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM