pipidu 发表于 2022-11-23 01:31:07

求助

#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;
}


为什么这里只有sum 被赋值了 而temp与weight可以不被赋值,为什么不给sum赋值结果会不正确?谢谢

wp231957 发表于 2022-11-23 06:06:29

sum充当累加器的功能,它初始值如果不是0
你猜结果能否正确

jhq999 发表于 2022-11-23 10:45:51

本帖最后由 jhq999 于 2022-11-23 10:47 编辑

说明白点,一个是白手起家,一个是富二代,如果手里有个小目标,白手起家是他自己赚的,富二代这个小目标里有多少是他继承的,不知道

最是无情读书人 发表于 2022-11-24 11:07:50

      unsigned long long sum = 0;
      unsigned long long temp;
      unsigned long long weight;

sum 先使用 后赋值,不提前确定初始值会出问题
temp weight 都是运行中先被赋值。

homeskating 发表于 2022-11-24 15:32:05


#include <stdio.h>
#include <math.h>
/**
* @brief
* sum累加需要sum初值,weight也需要sum初值,所以给sum赋初值,
* 当然你给temp和weight赋值也不会改变结果
* @return
*/
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);//temp调用系统函数赋值
                sum = sum + temp;//sum+=temp需要sum的值
        }
       
        weight = sum / 25000;//给weight赋值也需要temp
       
        printf("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
        printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", weight);
       
        return 0;
}
页: [1]
查看完整版本: 求助