关于for循环语句后的分号问题#include "Stdio.h"int main(void){long sum=0L;int count=0;int i=0;printf("\nplease enter the number of integers you want to sum:");scanf("%d",&count);for(i=count; i >=1 ;sum += i--) ;printf("\nTotal of the first

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/20 00:32:33
关于for循环语句后的分号问题#include =1 ;sum += i--) ;printf("\nTotal of the first" />
xT[OA+# o/(.Ҧ1MBE4EŊZ+?33>zf]IK̜9;ΙqFIӓjk^)"YKkEFaoL#^ {eu`"+a4㑕Ue "37Nv4F{ea5kS~'C>% )qX\|S`}T#B*}m9C^ۜWvh=H﷡԰Rr0vz-77NELOC F%nV'BVAD!Sd;0X$,$~2vkk+.lJJk9=H$N*ᎈ7 [t gzH#f;7 < )~I;Z&a"=aE 6.E&&GH$%QM-r##W)ak=LRQ@&sK I~GYoO`B dD.q 6}"Nkj!\G@C䓺 \3ŵca4#G7,3r8|vI+%a^L^tQ^@PH؛q=.6刍*m`$oZ>@ M:ŮgyATM)lCTGSPZX h&W.As5<Lb% c &. kz D4SmPZ.(Ծ\[e #+h()ggښ$R`V0e7Sϸ3Vz. `Js{?Di4_R=p e=~? .

关于for循环语句后的分号问题#include "Stdio.h"int main(void){long sum=0L;int count=0;int i=0;printf("\nplease enter the number of integers you want to sum:");scanf("%d",&count);for(i=count; i >=1 ;sum += i--) ;printf("\nTotal of the first
关于for循环语句后的分号问题
#include "Stdio.h"
int main(void)
{
long sum=0L;
int count=0;
int i=0;
printf("\nplease enter the number of integers you want to sum:");
scanf("%d",&count);
for(i=count; i >=1 ;sum += i--) ;
printf("\nTotal of the first %d number is %ld;\ni=%d.\n",count,sum,i);
}
for语句后的分号不加的话,sum的结果就是从2加到count,但是加的话,sum的结果就是从1加到count.
为什么会这样!

关于for循环语句后的分号问题#include "Stdio.h"int main(void){long sum=0L;int count=0;int i=0;printf("\nplease enter the number of integers you want to sum:");scanf("%d",&count);for(i=count; i >=1 ;sum += i--) ;printf("\nTotal of the first
for(表达式1;表达式2;表达式3) 语句
执行过程如下:
1) 先求解表达式1.
2) 求解表达式2,若其值为真,则执行for语句中指定的内嵌语句,然后执行下面第3)步;若其值为假,则结束循环,转到第5)步.
3) 求解表达式3.
4) 转回上面第2)步继续执行.
5) 循环结束,执行for语句下面的一个语句.
有分号时就是没有循环体时,等于是直接跳到3)步,去求表达式3了,也就是表达式3成为循环体,等价于
for(i=count; i >=1 ;i--)
sum=sum+i;
此后printf打出的是它执行完时sum的终值.
而没分号时循环体为printf语句,也就是说第一次并不是求表达式3,而是先去执行printf了,----这就是为什么第一次打出的sum总为0!也就是printf先于sum += i--执行了.
总之,两种情况下,sum += i--语句执行次数是一样的,但在没分号情况下,因printf要比它早执行一次,因而最后sum终值没有被打出来而已.