![](/img/trans.png)
[英]Why do I get a different value at run-time when type-casting a string to DWORD?
[英]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);
有谁知道为什么吗? 是标准的吗? 还是不确定的行为(取决于系统平台)?
我使用x86英特尔处理器和英特尔icc编译器。
我相信您的代码没有严格定义。
为了输出int64_t
类型(如果您的编译器支持,则必须为2的补码64位有signed
类型),您需要首先编写
#include <cinttypes>
然后使用PRId64
作为格式规范:
printf("%" PRId64, num);
如果您拥有C ++的比较优势,则可以使用相当简单的std::cout
,假设您的平台实现了该类型,则它将对int64_t
具有适当的重载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.