#include<stdio.h>
int main()
{
int a = 10;
printf("%d %d %d",++a,a++,a--);
return 0;
}
我编辑了一下代码..现在的输出是:11 9 10 它现在变得更复杂了..
答案 0 :(得分:2)
由编译器决定函数调用参数的顺序。
如果编译器从左向右(这将解释您的输出):
但如果我编译它,例如使用另一个编译器,我可以得到不同的输出。
答案 1 :(得分:1)
如下重写可能会让您更容易理解:
注意:我假设编译器会生成从左到右评估参数的代码!这可能是编译器特定的。
#include<stdio.h>
int main()
{
int a = 10;
int param2, param3, param4;
param2 = ++a; // increments a to 11 and evaluates to 11
param3 = a--; // evaluates to current value of a then decrements a (11)
param4 = a++; // evaluates to current value of a then increments a (10)
printf("%d %d %d",param2,param3,param4);
return 0;
}
答案 2 :(得分:0)
增量(++)和减量( - )运算符非常重要。因此,在++ a的情况下,该值从10增加到11然后打印,对于a - 打印当前值,即10,然后a增加到11.类似地,在最后一种情况下,打印++当前值11并且它增加到12。