1

我写了一个简单的程序,int a = 10我期待的 o/p 是10 9 9

 printf("a++:%d \t a:%d \t --a: %d \n", a++, a, --a); 

但是得到的o/p是9 10 10

我写了另一个类似的 printfprintf(" a:%d \t --a: %d \n", a, --a);

我得到的 o/p 是9 9

谁能解释一下这个?

4

1 回答 1

3

您正在经历未定义的行为,因为有多个具有副作用的表达式,中间没有序列点

无法保证评估函数参数的顺序,因此无法在这里“期望”某些东西(除非您编写了编译器)。

于 2013-04-16T09:34:34.707 回答