看来我还是没有解释错
看来我还是没有解释错
我看帖后的总结,供参考:
例:
#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.
要注意赋值运算符的优先级大于逗号表达式。所以用到逗号表达式时要用()。
此处是严格按输出格式控制输出。
判断关键,看有没有()号。
补充一下,个人理解:
在计算的时候是从右往左,在输出的时候是从左往右。
#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
不知这样理解对不?