简单的程序,但为什么?

来源:百度知道 编辑:UC知道 时间:2024/05/23 18:53:10
这两个程序看起来一样,可结果为什么不一样 ?
1j
一)main()
{
int a, b;
a=3,b=++a*a++;
printf(b=%f,b);
}
二)main()
{
int a,b;
a=3;
printf(++a*a++=%f,++a*a++);
}
这为什么不一样啊??????????????????????????
第一个的结果是25,第二个结果为20

更正一下,
经过编译运行.两程序的结果确实一样
++a * a++ is:16
使用的是WIN-TC编译器

不知道大家用的什么编译器,我的实验结果如下:
$ cat test.c
#include <stdio.h>
int main( )
{
int a, b;
a = 3;
printf("++a * a++ is:%d\n", ++a*a++);
return 0;
}
$ gcc test.c -o test
$ ./test
++a * a++ is:16

因为C语言有个特点,就是++a先+后复值,a++先复值后+
printf是从后面向前算而不是从前向后算,