c语言中 a++*2 的运算顺序. 是先a*2 后++吗 代码如下

#include "stdio.h"
int main()
{
int a=0,n;
printf("\n输入 n 的值:\n");
scanf("%d",&n);
while(n--)
{
printf("%d\n",a++*2);

}
}

输入3,结果得:

输入 n 的值:
3
0
2
4
请按任意键继续. . .

printf("%d\n",a++*2);
等价于
printf("%d\n",a*2,a++);
其中a*2没有改变原来a的值,%d输出的就是a*2的值,不是a的值;输出后a+1;每执行一次循环a的值就加一,a的值并不受a*2影响。
不要纠结这些++,--的运算顺序,实际使用的时候也不会这样用,很容易出错,也不好阅读。
不懂就继续追问。追问

要是是 printf("%d\n",++a*2);
是否等价于 printf(“%d\n”,++a,a*2); a先加一,在*2. (不好意思我纠结了).

printf 输出的是一个表达式,而不是a的值.这我就懂了.

温馨提示:答案为网友推荐,仅供参考
相似回答