这段代码的意义大家都懂:
#include <stdio.h>
int main()
{
int a=1;
b = a++;
printf("%d\n",b);//结果为1
b = ++a;
printf("%d",b);//结果为3
return 0;
}
观察以下代码
#include <stdio.h>
int main()
{
int a = 1;
printf("%d %d %d\n",a++,a++,a++);
printf("%d %d %d",++a,++a,++a);
return 0;
}
3 2 1
7 7 7
没想到吧。
二言以蔽之
- printf()函数的读参的顺序是从后往前的,且每读完一个参,就接着执行参数本身的后置自加操作。
- 前置的自加操作的优先级高的超乎想象,做完所有前置自加操作之后再说其它。