-2

当我编译以下代码时,它会在不同的环境中给出不同的输出。

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 个。

任何人都可以向我解释一下吗?

4

1 回答 1

0

以下代码:

a = ++a + ++a;

a = ++a + ++a + ++a;

都是Undefined Behavior的例子,所以结果取决于编译器、平台等。

请查看 K&R 的“The C Programming Language”,第 2.12 节

于 2013-04-01T10:35:18.303 回答