混淆了printf的结果(“(%d,a =%d,a + b =%d)”,a = a + 3,a,a + b);

时间:2015-08-03 11:40:07

标签: c printf

给出以下代码:

int a=0,b=2;
printf("(%d,a=%d,a+b=%d)",a=a+3,a,a+b);

结果为(3,a=3,a+b=5)

的原因

1 个答案:

答案 0 :(得分:0)

您正在打印作为指定值(a=a+3)的作业(3)的结果。 但参数的评估顺序取决于编译器(未定义的行为)。它可以打印:

(3,a=3,a+b=5)

或:

(3,a=0,a+b=2)

甚至:

(3,a=0,a+b=5)