你可能发现,上次用的%ld打印的int64_t,今天用就不行了.是有可能的.
因为64位数据类型它不是基础数据类型.一般都是typedef出来的.
所以,具体要怎么打印64位的,还要看他是怎么定义的.
//1 用unsigned long表示64位
uint64_t num = 4503599627370495;//0xfffffffffffff
printf("%lu\n", num); //十进制输出
printf(“%#lx\n”, num); //十六进制输出
//2 用unsigned long long表示64位
printf("%llu\n", num); //十进制输出
printf(“%#llx\n”, num); //十六进制输出
例子:
main.c
#include <stdio.h>
typedef unsigned long uint64_t;
typedef unsigned long long UINT64;
int main()
{
uint64_t a = 0xfffffffffffffff;
UINT64 b = 0x1fffffffffffffff;
printf("sizeof : %ld,%ld\n", sizeof(a), sizeof(b));
printf("a : %lu(%#lx)\n", a, a);
printf("b : %llu(%#llx)\n", b, b);
return 0;
}
sizeof : 8,8
a : 1152921504606846975(0xfffffffffffffff)
b :2305843009213693951(0x1fffffffffffffff)