CaptainBiken 发表于 2020-8-14 11:33:03

printf

本帖最后由 CaptainBiken 于 2020-8-14 14:57 编辑

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

int main()
{
      int i;
      double result;

      printf("请输入一个整数:");
      scanf("%d", &i);

      result = pow(i, 5);

      printf("%d的五次方是:%.2f\n", i, result);

      return 0;
}

为什么把result改成i*i*i*i*i,结果变成了0.00?

求助大佬~

zltzlt 发表于 2020-8-14 11:34:14

你说的是 i 吧……

因为 i 是 int 类型,128 * 128 * 128 * 128 * 128 已经超出 int 类型能够表示的最大值了,所以会溢出,最后结果为 0

CaptainBiken 发表于 2020-8-14 15:01:52

zltzlt 发表于 2020-8-14 11:34
你说的是 i 吧……

因为 i 是 int 类型,128 * 128 * 128 * 128 * 128 已经超出 int 类型能够表示的最大 ...

感谢大佬
不过我前面的占位符还是%.2f,不是%d啊,为什么最后还是会溢出呢?难道这个是看i的数据类型吗{:5_107:}
麻烦大佬再解释下~

zltzlt 发表于 2020-8-14 15:06:51

CaptainBiken 发表于 2020-8-14 15:01
感谢大佬
不过我前面的占位符还是%.2f,不是%d啊,为什么最后还是会溢出呢?难道这个是看i的数据类型吗{ ...

128 * 128 * 128 * 128 * 128 这一步就已经溢出了,转化为 double 也没用

CaptainBiken 发表于 2020-8-14 17:27:02

zltzlt 发表于 2020-8-14 15:06
128 * 128 * 128 * 128 * 128 这一步就已经溢出了,转化为 double 也没用

懂了 感谢大佬{:5_110:}
页: [1]
查看完整版本: printf