Dev-C++和xcode编译器的不同输出[重复]
Posted
技术标签:
【中文标题】Dev-C++和xcode编译器的不同输出[重复]【英文标题】:different output with Dev-C++ and xcode compiler [duplicate] 【发布时间】:2013-04-01 06:18:29 【问题描述】:当我编译以下代码时,它会在不同的环境中给出不同的输出。
int a=4; a = ++a + ++a; printf("%d",a);
在 Dev-C++ 中编译它会得到 12,而在 xcode LLVM 编译器中它会得到 11 作为输出。
当我编译以下代码时
int a=4; a = ++a + ++a + ++a; printf("%d",a);
它在 Dev-C++ 中给出 19 个,在 xcode LLVM 编译器中给出 18 个。
谁能给我详细解释一下?
【问题讨论】:
啊哈..很久没有看到其中之一了 :) 我们无法告诉您,因为该行为是未定义的行为。++a + ++a
是纯粹依赖于编译器的操作。没有惊喜。
我建议a = ++a + a++
类型的问题应该有一个单独的标签;有这么多;-)
你可能创造了最高代表提出这个糟糕问题的人的记录。
@JimBalter 感谢您让我知道,无论如何我在 Google 上搜索并没有找到任何东西,所以请在这个社区提出这个问题。如果您觉得这个问题比它的好,但我仍然想对此进行研究并想得出结论。是否有人反对它并不重要。
【参考方案1】:
以下代码:
a = ++a + ++a;
和
a = ++a + ++a + ++a;
都是Undefined Behaviour的例子,所以结果取决于编译器、平台等。
请查看 K&R 的“The C Programming Language”,第 2.12 节
【讨论】:
以上是关于Dev-C++和xcode编译器的不同输出[重复]的主要内容,如果未能解决你的问题,请参考以下文章