在c++中简单的编码出现了非常惊人和令人震惊的逻辑问题。
请参阅以下两段代码。
代码 1
int m = 5, n = 0;
n = m++ * ++m;
//This print m = 7 and n = 36
//Which is logically wrong
代码 2
int m = 5;
int n = m++ * ++m;
//This print m = 7 and n = 35
//Which is logically right
正如我们在逻辑上认为,代码块 2 给出了正确的答案,但令人惊奇或神奇的是代码块 1 有什么问题?
部分代码相同,只是我们之前声明int n
过。
可能有些编译!!!!!!