何艺铧 发表于 2021-12-9 16:03:24

why!

#include <stdio.h>
#include<math.h>
int main()
{
    printf("请输入一个整数:");
    int i;
    int g;
   scanf_s("%d", &i);
   g = pow(i, 5);

   
    printf(" 128的五次方是:%u\n", g);
   

    return 0;
}
为什么输出结果不是34359738368,而是2147483648啊,兄弟们

阿萨德按时 发表于 2021-12-9 16:18:24

超出int的取值范围了,可以看看小甲鱼的课程https://xxx.ilovefishc.com/forum/201512/27/205729vnwzeadn08gx9h89.png

jackz007 发表于 2021-12-9 16:33:59

#include <stdio.h>

int main(void)
{
      unsigned long long d , i , m , n                     ;
      scanf("%I64u%I64u" , & n , & d)                      ;
      for(m = 1LL, i = 0 ; i < d ; i ++) m *= n            ;
      printf("%I64u 的 %I64u 次方是:%I64u\n" , n , d , m) ;
}
      编译、运行实况:
D:\0002.Exercise\C>x
128 5
128 的 5 次方是:34359738368

D:\0002.Exercise\C>

tomok 发表于 2021-12-9 16:44:02

来学习了
页: [1]
查看完整版本: why!