在C++中出现了令人惊讶和令人震惊的逻辑问题。编译器问题或代码块中的一些错误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
。
可能会有些编译!!!!!!
'm ++ * ++ m' is * undefined behavior *。你的输出没有什么“逻辑错误”;这是你的代码坏了。 – Cairnarvon
我想一个有效的问题是:为什么这个编译器实现以这种方式工作。 – Elazar
@RaymondChen,你没有回答我的问题。实施可能会产生一个井字游戏,但它没有。 – Elazar