int a = 3;
cout << ++a << a++ << ++a << a++ << endl;
codeblocks :: mingw上这段代码的答案是7573。我到现在所知道的是,后增量是正确的,但前增量有一些不同的逻辑。对于所有预增量,最后一个增量的最后一个值将是相同的。任何人都可以用++ a告诉我实际发生了什么。
还有一件事需要从右到左解决。谢谢你的回答。
在移位算子表达式
E1<<E2
和E1>>E2
中,E1
的每个值计算和副作用在E2
的每个值计算和副作用之前被排序。
所以输出是明确定义的,应该是4466
。
在C ++ 17之前,代码导致了未定义的行为as explained here。您的输出表明您使用的是旧编译器(或在旧模式下调用编译器)。