c程序中的变长参数

时间:2015-04-08 23:45:23

标签: c post-increment pre-increment

在以下程序中

#include<stdio.h>
int main()
{
int a;
a=5; printf("%d %d %d\n", a, a++ , a++);  //statement 1
a=5; printf("%d %d %d\n", a, ++a , ++a);  //statement 2
return 0;
}

输出

7 6 5
7 7 7

我的问题为什么与++和++有不同的行为a。我知道在变长参数中它是从左到右执行而语句1有意义但是我想知道statement2的结果而我期待像7 7 6这样的结果......我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:-1)

未指定函数的参数评估的顺序。无论此顺序如何,您都有责任编写相同的代码。