宫宸 发表于 2021-11-17 20:46:21

C语言简单题目

#include<stdio.h>
#include<math.h>
int main()
{
        int a,n,sum;
        for(a=1;a<=64;a++)
        {
        n=pow(2,a-1);
        sum+=n;
        }
        printf("%d",sum);
        return 0;
}
运行结果不正确,麻烦看看哪错了,谢谢

jhq999 发表于 2021-11-17 20:49:28

本帖最后由 jhq999 于 2021-11-17 20:52 编辑

int main()
{
         unsigned long long a,n,sum;/////////
      sum=0;////////////
      for(a=1;a<=64;a++)
      {
      n=pow(2,a-1);
      sum+=n;
      }
      printf("%llu",sum);//////////
      return 0;
}

l1558305008 发表于 2021-11-17 21:04:50

int的字节长度不够,sum值太大,超出int的范围

宫宸 发表于 2021-11-17 21:06:28

l1558305008 发表于 2021-11-17 21:04
int的字节长度不够,sum值太大,超出int的范围

茅厕顿开

wutianlong220 发表于 2021-11-17 21:07:57

你这个问题应该是,数字太大了,超过int所能表示的最大范围,所以就错了
页: [1]
查看完整版本: C语言简单题目