【发布时间】:2020-05-17 21:34:31
【问题描述】:
int a = 10;
a = a++;
cout << a<<" ";
a++;
cout << a;
在 microsoft Visual 中,它的输出是 11 12
而在其他编译器(如 codechef 和 codeforces)中,它的输出是 10 11
这个问题的输出是在一些 mcq 论文中提出的,正确答案是 10 11 但 any1 也可以解释一下
a = a++;
++a;
cout<<a;
产生 11 的输出 a = a++ 没有做任何事情吗?
【问题讨论】:
-
如果您使用了正确的警告选项,代码wouldn't even compile
-
@Ayxan 该错误消息是误报警告,被视为错误。由于 C++17(您在链接中使用了 C++2a),该行具有明确定义的行为。
-std=c++2a选项的警告是错误的。 (另外注意:我不建议默认使用-Ofast。它会破坏标准一致性。) -
@walnut 和
-std=c++17一样gcc.godbolt.org/z/bmsYN4 -
@Ayxan 是的,在这两种情况下都是误报。只有
-std=c++14和更低的行实际上具有未定义的行为。