qudanhan 发表于 2019-1-30 16:11:47

数据类型课后作业求助


为什么把 sum = 0 放在开头定义里和放在 for循环 里的结果不一样

BngThea 发表于 2019-1-30 16:43:39

放到循环里面每次循环都被赋值为0

jackz007 发表于 2019-1-30 18:06:03

本帖最后由 jackz007 于 2019-1-30 18:08 编辑

      如果把 sum 放在循环外面,那么 sum 的值是 pow(2 , 0) + pow(2 , 1) + pow(2 , 3) + . . . + pow(2 , 63) ;如果放在循环里面,sum 的值只是 pow(2 ,63) ,就没有累加的效果了 。

行客 发表于 2019-1-30 18:28:19

sum循环内,每次循环sum开始都会被初始化为0,所以最后1次循环结束后,sum的最终值为
sum = 0 + temp;
最后的sum为
sum = 0 + pow(2 ,63) ;

而在循环体外,每次sum都会累加。即sum的值为
第1次循环,i为0
sum = 0 + pow(2 ,0) ;
第2次循环,此时sum已经被赋值为pow(2 ,0)了,所以
sum = pow(2 ,0)+ pow(2 ,1);
第3次循环,
sum = pow(2 ,0)+ pow(2 ,1) + pow(2 ,2) ;

以此类推。。。。

直到i为63结束循环,此时sum值为:
sum = pow(2 ,0)+ pow(2 ,1) + pow(2 ,2) + ... + pow(2,63);

获得正确结果。

qudanhan 发表于 2019-1-31 10:34:19

行客 发表于 2019-1-30 18:28
sum循环内,每次循环sum开始都会被初始化为0,所以最后1次循环结束后,sum的最终值为
sum = 0 + temp;
最 ...

懂啦谢谢!!!

李玉洁 发表于 2019-1-31 13:51:13

作业在哪个页面啊
页: [1]
查看完整版本: 数据类型课后作业求助