这里的代码解释,c++中cout语句的输出顺序


#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;

因此不能保证CCD_ 1何时发生。唯一可以指望的是c++项将是初始值,因为++在收集值后递增。

a,a

b,a

是有效输出。

从C++17开始,本标准保证在进行下一个<<之前,所有副作用都将得到解决。在<< ","开始之前,<< c将被解决,而不是说有很多问题需要解决。<< c++甚至出现在链的后面。这意味着您应该始终看到

a,ab、 bc、 c

请参阅评估顺序底部关于未定义行为的注释

我认为这与这里的操作顺序有关。流运算符(<<(从右到左进行操作。这意味着在第一次运行中,c++的计算结果为"a",但会导致c++0迭代到"b"。

相关内容

  • 没有找到相关文章

最新更新