跨平台(32bit和64bit)的 printf 格式符 %lld 输出64位的解决方式 |
您所在的位置:网站首页 › printf指针地址 › 跨平台(32bit和64bit)的 printf 格式符 %lld 输出64位的解决方式 |
问题描述
在 C/C++ 开发中,使用 printf 打印 64 位变量比较常用,通常在 32 位系统中使用 %lld 输出 64 位的变量,而在 64 位系统中则使用 %ld; 如果在 32 位系统中使用 %ld 输出 64 位变量,很可能打印的值是异常的,而在 64 位系统中则使用 %lld,则通常会出现编译报错,类似如: format '%lld' expects type 'long long int', but argument 4 has type 'int64_t'[ -Werror=format=]如果在跨平台移植代码时,通常就会遇到这种情况。 解决方案为了解决跨平台移植的问题,% PRId64 的书写方式解决了跨平台的问题,主要是为了同时支持32位和64位操作系统。PRId64表示64位整数,在32位系统中表示long long int,在64位系统中表示long int。 写法格式: uint64_t value = 1560; printf("value = %" PRId64 "\n", value);效果如下: uint64_t value = 1560; printf("value = %" "%ld" "\n", value); // 64bit OS printf("value = %" "%lld" "\n", value); // 32bit OS或者 uint64_t value = 1560; printf("value = %ld\n", value); // 64bit OS printf("value = %lld\n", value); // 32bit OS |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |