半路学习 发表于 2021-2-8 11:10:35

为什么计算2的63次方算不出来

Dev-C++输入代码

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

int main()
{
        unsigned long long int result;
       
        result =pow(2,63)-1;
        printf("result =%u\n",result);
       
        return 0;
}
编译运行为什么没有正确结果出来

昨非 发表于 2021-2-8 11:41:00

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

int main()
{
        unsigned long long int result;

        result = pow(2, 63) - 1;
        printf("result =%llu\n", result);   //unsigned long long 对应格式串为%llu

        return 0;
}
结果为:result =9223372036854775808

半路学习 发表于 2021-2-8 12:49:36

昨非 发表于 2021-2-8 11:41
结果为:

谢谢,为什么%u就不能输出正确结果?为什么是%11 u

半路学习 发表于 2021-2-8 12:59:34

半路学习 发表于 2021-2-8 12:49
谢谢,为什么%u就不能输出正确结果?为什么是%11 u

我以为“ll”是数字11,原来“ll”是long long 首字母缩写ll,谢谢

昨非 发表于 2021-2-8 13:07:58

半路学习 发表于 2021-2-8 12:59
我以为“ll”是数字11,原来“ll”是long long 首字母缩写ll,谢谢

解决了记得设置最佳答案{:10_297:}

窝窝头传奇 发表于 2021-2-8 15:21:51

我想问一下 为什么求2的63次方 pow(2,63)要减去1

李京 发表于 2021-2-8 15:30:34

窝窝头传奇 发表于 2021-2-8 15:21
我感觉-1是他的习惯,,,

窝窝头传奇 发表于 2021-2-8 15:33:08

李京 发表于 2021-2-8 15:30
窝窝头传奇 发表于 2021-2-8 15:21
我感觉-1是他的习惯,,,

不是的

窝窝头传奇 发表于 2021-2-8 15:35:38

窝窝头传奇 发表于 2021-2-8 15:33
不是的

他们在算能存放的最大值吧

窝窝头传奇 发表于 2021-2-8 15:36:11

李京 发表于 2021-2-8 15:30
窝窝头传奇 发表于 2021-2-8 15:21
我感觉-1是他的习惯,,,

这个是在算无符号数能存放的最大值 好像

李京 发表于 2021-2-8 15:40:33

窝窝头传奇 发表于 2021-2-8 15:36
这个是在算无符号数能存放的最大值 好像

unsigned long long 最大可以存放2的64次方-1
页: [1]
查看完整版本: 为什么计算2的63次方算不出来