我遇到了这段代码:
#include <iostream>
int main()
{
int m = 44;
std::cout << "m = " << m << ", m++ = " << m++ << ", ++m = " << ++m <<
std::endl;
return 0;
}
我的第一个想法是,这是未定义的行为,但事实证明这段代码是我大学考试的一部分,所以我现在不太确定。
考试的问题是:该课程的输出是什么?
我还听说C ++ 11或C ++ 14以某种方式改变了关于UB的规则,所以现在可以定义它。
无论如何,输出是(在windows中的gcc上)
m = 46, m++ = 45, ++m = 46
输出是否正确?