为什么我需要类型转换时打印负整数值
why do I need type casting when printf negative interger value
下面的代码输出一个非常大的整数值,而不是-1。
int64_t num = -1
printf("%lld",num);
我需要输入强制转换来打印-1。
printf("%lld",(int64_t) num);
有人知道为什么吗?这是标准的吗?或者根据系统平台而变化的未定义行为?
我使用intel x86处理器和intel icc编译器
我相信你的代码没有严格定义。
为了输出一个int64_t
类型(如果你的编译器支持,它必须是一个2的补位64位signed
类型),你需要先写
#include <cinttypes>
然后使用PRId64
作为格式说明符:
printf("%" PRId64, num);
如果您有比较奢侈的c++,您可以使用相当简单的std::cout
,它将为int64_t
提供适当的重载,假设您的平台实现了该类型。
相关文章:
- 在一定长度后从数组中打印时缺少整数
- 如何打印boost多精度128位无符号整数
- std::带有颜色和标题的 clog 包装器无法正确打印整数
- 无法在 Visual Studio 2019 中打印整数
- C++,尝试打印整数时cout的奇怪行为
- 打印整数总和 > 0
- 如何以相反顺序C 打印整数的单个数字
- 打印整数指针元素时的结果不同
- 使用数组从文件打印整数
- gdb ptype 打印整数后缀以指示它是有符号的、无符号的、无符号的长整型等
- 以幂形式 (^) 打印整数的质因数
- Python和Floats-只打印整数
- 有没有办法通过 int 指针一次打印整数
- 为什么我不能扫描和打印整数?
- 如何在net-snmp中打印整数和Counter32值
- 比scanf和printf更有效的扫描和打印整数的方法
- 使用递归以正确的顺序打印整数的数字
- 为什么控制台在使用运算符的地址时只打印整数变量的1个唯一地址
- 用C/C++打印整数
- 如何不打印整数列表的最后一个逗号