卑微者 发表于 2020-3-15 16:51:13

小白求解课后题目

      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;

请问为什么要用unsigned,默认signed情况下计算sum可以实现但是weight计算出来是0,必须要用unsigned限定sum temp和weight才可以得出结果,但是本身计算的数字不存在负数呀,所以搞不太明白

sunrise085 发表于 2020-3-15 16:53:41

unsigned long long类型只有正数,范围比有符号的大一倍。这样才能容纳下该结果。
若用默认的signed,会溢出导致数据错误。

卑微者 发表于 2020-3-15 17:06:36

sunrise085 发表于 2020-3-15 16:53
unsigned long long类型只有正数,范围比有符号的大一倍。这样才能容纳下该结果。
若用默认的signed,会溢 ...

感谢,学习了
页: [1]
查看完整版本: 小白求解课后题目