我搞不清楚C语言中的运算符的先后顺序

t+=a++,先执行t=t+a,再a++.我不明白的是++优先级高于+=,我觉得应该是先执行a++,再执行t=t+a

t+=a++其实可以说是t=t+a++;的简写,
比如t=t+5;就可以写为t+=5;
所以t=t+a++;就可以写为t+=a++;
而t=t+a++;当然就是先计算t=t+a; 再a++了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-03
t+=1
等价于t=t+1
(但是在有些语言中 =+这样方式不需要强制类型转换,而后一种方法就需要强制转换 如java语言中的某些情况)

a++;++a;
单独的时候讨论它们的区别没有意义
要在赋值的时候讨论 如
int i,a;
a=1;
i=a++
printf("i=%d\n",i);
printf("a=%d\n",a);
这样结果为:
i=1
a=2

若:
int i,a;
a=1;
i=++a;
printf("i=%d\n",i);
printf("a=%d\n",a);
这样结果为:
i=2
a=2
--------------
你的问题中
t+=a++,
这句相当于
t=t+a;
a++;本回答被提问者采纳
第2个回答  2008-11-03
t+=a++

++优先级高于+=,先执行++运算,再+=,但是++运算先把a传出去,再把a自增一

名义上先执行++运算,再+=
实际上t=t+a ,再a=a+1
第3个回答  2008-11-03
我在这也出了问题t=t+a++;++的优先级高于+吖!++高于复合赋值运算这还晓得t=t+a++,看得懂就是++的优先级高于+吖!;这又怎么回事我编了一个程序;
#include "stdio.h"
main()
{int a=0,t=0;
t+=a++;
printf("%d,%d",a,t);

}运行结果:1,0
但就是先+运算再a++的,这是怎么回事?

参考资料:我一发看见2楼的就明白了,一楼解释的糊涂。

相似回答