C语言的难题

来源:百度知道 编辑:UC知道 时间:2024/06/15 19:47:22
#include<stdio.h>
main()
{
int a=3;
printf("%d,%d\n",a,(a-=a*a));
}

#include<stdio.h>
main()
{
int a=3;
printf("%d,%d\n",(a-=a*a),a);
}
两个程序的结果为什么是不一样的呢?????

这两个的不同跟你用的编译器有关
比如TC:在TC中先从右到左计算,然后从左到有右输出,所以第一个输出的是-6,-6,第二个输出是-6,3
也有的编译器先从左到有右计算,然后从右到左输出,结果跟TC的正好相反

第一个程序先打印a,然后打印a = a - a*a,
第一个程序先打印a = a - a*a,这时a的值已经变化了,再打印a是个处理后的结果