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编译器的不同输出[重复]的主要内容,如果未能解决你的问题,请参考以下文章

DEV-C++编译问题~

Dev C ++中的编译错误错误[重复]

在 dev-c++ 中将数组放在一起

Dev-C++ 和 Detours 编译错误

DEV-C++ 不再显示任何可用的编译器

DEV-C++是否不完全支持C99标准?