运算符的结合方向

来源:百度知道 编辑:UC知道 时间:2024/09/25 13:17:56
例题
#include<stdio.h>
void main()
{
int n=2;
printf("%d,%d,%d",++n,n+=2,--n);
}
运行结果 4,3,1

疑问:printf语句中是怎么运算的?
理解1.运算符结合方向是从右到左 所以先算左--n,再n+=2 最后++n
理解2. 运算符结合方向对一个运算式来说,所以先++n 即n+1 结果为3 与答案不符 还有n++如果从右到左又如何呢??
理解3. printf("%d,%d,%d",++n,n+=2,--n);改为printf("%d,%d,%d",++n,n+=2,n--);后结果为5,4,2 (n--是先把n作为表达式所以直接为2,--无用) 这样就说明理解1是正确的
以上3个理解哪个是对的,如果都错,正确的电脑运算过程是怎样的

程序编译的时候是自右向左编译的
所以先是--n n=1
再是n+=2 n=3
最后是++n n=4
当程序打印时,就是自左向右了
所以你会看到4 3 1 的结果

这和系统有关系,不同的系统结果不同。有的系统从左到右,而有的系统则从右到左。为了避免这些不必要的麻烦,我们在输出时最好不要采取种方法。

是个问题!!