注册 登录
编程论坛 C++教室

想要保存64bit的数,发现用_int64也只能到32位。请问各位朋友有没有什么好的办法。我用的是VC6.0, 不支持long long型。

yangfrancis 发布于 2016-11-04 11:23, 2114 次点击
#include<stdio.h>
#include<math.h>
int main()
{
    _int64 x;
    x=pow(0x10,8);    //当第二个参数是7时,能够打印出10000000,但改为8就输出了0.
    printf("%x",x);
    return 0;
}
8位的十六进制数转为二进制只有32,达不到我的要求。能否帮忙想想办法。
4 回复
#2
rjsp2016-11-04 12:03
程序代码:
#include <stdio.h>
#include <math.h>
#include <stdint.h>
#include <inttypes.h>
int main( void )
{
    { // 使用VC私有的 __int64 类型
        __int64 x = (__int64)pow( 16.0, 8.0 );
        printf( "%I64x\n", x );
    }
    { // 使用标准的 long long 类型
        long long x = (long long)pow( 16.0, 8.0 );
        printf( "%llx\n", x );
    }
    { // 使用标准的 int64_t 类型
        int64_t x = (int64_t)pow( 16.0, 8.0 );
        printf( "%"PRIx64"\n", x );
    }
    return 0;
}
#3
yangfrancis2016-11-04 12:21
第二种方法出现编译器不识别long long的错误,第三种方法提示找不到头文件,第一种方法可以完美解决。看来不是保存不了,是打印方法有问题。
谢谢了。
#4
rjsp2016-11-04 14:02
以下是引用yangfrancis在2016-11-4 12:21:31的发言:

第二种方法出现编译器不识别long long的错误,第三种方法提示找不到头文件,第一种方法可以完美解决。看来不是保存不了,是打印方法有问题。
谢谢了。
你用的是 VC6 ?
#5
StadyC2016-11-04 16:18
如果确实要使用到很大的数据,那么可以考虑用数组来存储了。进行运算时,要记住搞好进位方面的就可以了。
1