我尝试int
在程序中打印的最大值。使用以下代码::
#include <stdio.h>
#include <limits.h>
int main(void) {
printf("%d",INT_MAX);
return 0;
}
我得到的输出是: 2147483647
但是,当我更改printf
对printf("%lld",INT_MAX);
输出的声明时,它变为577732524332023807
。INT_MAX
值应该在的范围内long long int
,那么为什么它不能转换INT_MAX
成正确的数字long long int
。
感谢您的任何提前帮助。
printf
是可变参数函数,它不知道其参数类型,它依赖于在格式字符串中接收正确的提示。
您使用调用了未定义的行为"%lld"
,因为您尚未传递long long int
。
要修复它,您需要进行投射-然后您会看到正确的结果:
printf("%lld", (long long int) INT_MAX);
启用编译器警告?:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句