屿0715 发表于 2021-11-7 02:23:37

关于sum真的很懵啊啊啊

不明白sum的意思和为什么声明那赋值0,还有下面的sum = sum + temp;
希望有大佬可以给出解答呜呜,感谢!!!!!

#include <stdio.h>
#include <math.h>

int main()
{
      unsigned long long sum = 0;
      unsigned long long temp;
      unsigned long long weight;
      int i;

      for (i=0; i < 64; i++)
      {
                temp = pow(2, i);
                sum = sum + temp;
      }

      weight = sum / 25000;

      printf("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
      printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", weight);

      return 0;
}

wp231957 发表于 2021-11-7 07:54:21

sum = sum + temp;
这就是字面意思,一个累加器,不知道如何进一步解释
sum=0也是字面意思,也不知道如何解释

此方星河 发表于 2021-11-7 08:00:04

之所以先将sum赋值为0,这是因为一会要用到sum的值,所以必须赋值,不赋值的话会警告
在for循环里面,i = 0的时候,temp = 1,sum = 0(之前赋值的sum = 0) + 1 = 1;
                     i = 1的时候,temp = 2,sum = 1(i = 0时候for循环赋的值) + 2 = 3;
                     i = 2的时候,temp = 4,sum = 3(i = 1时候for循环赋的值) + 4 = 6;
                      ......
另外,sum= sum + temp 可以写成sum += temp;

柿子饼同学 发表于 2021-11-7 13:17:45

sum = 0 是一次初始化 , 就是告诉编译器创建一个变量 , 叫 sum
sum = sum + temp 是自增运算
例:
sum = 0; temp = 1则sum = sum + temp 就是 sum = 0 + 1 = 1
然后 temp = 2 , sum = sum + temp 就是 sum = 1(上一次循环sum不是1嘛) + 2 = 3
这时 , sum = 3
以此类推

屿0715 发表于 2021-11-10 21:02:01

此方星河 发表于 2021-11-7 08:00
之所以先将sum赋值为0,这是因为一会要用到sum的值,所以必须赋值,不赋值的话会警告
在for循环里面,i =...

感谢大佬!

屿0715 发表于 2021-11-10 21:02:31

柿子饼同学 发表于 2021-11-7 13:17
sum = 0 是一次初始化 , 就是告诉编译器创建一个变量 , 叫 sum
sum = sum + temp 是自增运算
例:


谢谢大佬!

屿0715 发表于 2021-11-10 21:03:01

wp231957 发表于 2021-11-7 07:54
sum = sum + temp;
这就是字面意思,一个累加器,不知道如何进一步解释
sum=0也是字面意思,也不知道如何 ...

!谢谢
页: [1]
查看完整版本: 关于sum真的很懵啊啊啊