C语言结果输出问题~

来源:百度知道 编辑:UC知道 时间:2024/05/09 20:47:41
#include <stdio.h>
void main( )
{ int a=1;
float b;
b=++a*++a;
printf("%f\n",b);
}
结果是多少?为什么?

b=3*3;最后的结果是9
首先开始a=1;
然后到b=++a*++a;这句的时候
先执行第一个++a,这时a变成了2
然后再执行第二个++a,这时a变成了3,同时第一个a也变成了3
因为他们是同一个变量,所以一个变了另一个也肯定变
就好比你变了你也变了是一样的
所以最后得9
如果是b=a++*++a的话就不同了,结果是2
因为a++是整个表达式计算完后才自加

6

b=2*3

结果为9
b=++a*++a;
++运算符得优先级别较高
所以为
b=(++a)*(++a);
b=3*3=9

编译器不同结果可能有差异,其中的一种结果是输出:9.000000
程序中先进行++a的运算,即a+1,完成后再相乘,b=3*3=9,浮点格式输出,所以为9.000000