看来我还是没有解释错
----------------解决方案--------------------------------------------------------
我看帖后的总结,供参考:
例:
#include "stdio.h"
#include "conio.h"
void main()
{ int a=1;
printf("%d\n",a=3*a,3*a);
getch();
}
输出结果为3。
此处并不是一个逗号表达式。编译器一般是从右到左调用函数。故改为
printf(“%d,%d\n",a=3*a,3*a);输出值为3,3.改为Printf("%d,%d,\n",3*a,a=3*a);输出结果为9,3.
要注意赋值运算符的优先级大于逗号表达式。所以用到逗号表达式时要用()。
此处是严格按输出格式控制输出。
判断关键,看有没有()号。
----------------解决方案--------------------------------------------------------
printf()函数调用时,是从右到左,
所以printf("%d\n",a=3*a,3*a);先执行3*a,再执行a=3*a
结果是:3
printf("%d %d\n",a=3*a,3*a);
结果
3 3
----------------解决方案--------------------------------------------------------
回复:(tvkl)我看帖后的总结,供参考:例:#include...
补充一下,个人理解:
在计算的时候是从右往左,在输出的时候是从左往右。
#include "stdio.h"
#include "conio.h"
void main()
{ int a=1;
printf("%d\n",3*a,a=3*a);
getch();
}
结果是 9,
说明计算时是先算a=3*a ,再算3*a。 所以结果本应为 9 3 。 但是输出从左往右,此处只有一个%d ,所以只输出了 左边的 9
不知这样理解对不?
----------------解决方案--------------------------------------------------------
嗯,应该是这样理解,注意格式控制是从左向右的,函数调用一般是自右向左的,但有的编译器函数的调用也是从左向右,最后的结果就会是3
----------------解决方案--------------------------------------------------------