#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"。