首先,赋值号"="的优先级要比加号的低,所以要先算右边sum+i的值,将sum和i的值代入sum+i这个表达式并计算出结果,计算完之后才能将相加的结果赋值给左边的sum
其次,赋值运算的顺序是从右到左,即把右边的值给到左边(的变量)去
所以,sum = sum + i 这个式子,首先算sum+i的值,也就是0+1=1,然后进行赋值运算,从右边赋到左边,也就是把1这个上次的运算结果赋给变量sum(同时会覆盖原来sum的值)。
最后顺便说一句,0=0+1这个式子在数学当中成立吗?那个等号是赋值号,和数学里的等号完全不是一回事。数学中的等号在C语言中是"=="这个符号。
呵呵 这个是初学C语言者的疑惑,
= 是赋值符号,是把右边的值赋给左边,
sum = 0 是把0付给右边的sum
sum = sum + i 是把sum+i 即0+i赋给右边的sum,个人总结
右边的式子里的变量看前面程序,而左边的变量看赋值这一句,
这一点必须搞清楚,要不没办法继续呀,因为这样的用法非常多
右边是赋值前的,左边是之后的
这是循环语句,也就是说,第一次赋值前,sum=0,之后就变成了因为加i了,就变成了1
然后再进行第二次循环,i=2,赋值前,sum=1,加i之后就成了1+2=3了
依次类推,这很好理解的
你连计算机语言基础都不会,还是看看书再问问题吧。
程序语言是顺序执行的!!
在这个 for 循环里 程序经过编译后
实际是类似这样的过程,
寄存器里保存了sum的值,还有一个寄存器保存了i 值
先执行sum+i 把结果放到另外一个寄存器3中
然后把寄存器3中的结果放到保存sum值的寄存器中
现在sum的值不是被改变了么,哪来的2个sum,还左边右边什么的。
第二次循环时 重复之前的操作
。。。以此类推 最后就算出了总和了。
这是由运算顺序决定的,我们先算=右边的值,然后将其结果赋值给了=左边的sum,故sum的值变化了,由原来的值被新计算的值覆盖掉了!!但是此运算结束后,sum的值肯定是一样的啊!