c – 为什么数据类型的最大值显示荒谬的高值?
发布时间:2020-12-16 10:13:55 所属栏目:百科 来源:网络整理
导读:我正在做K R C的问题2.1,它基本上要我们搞乱并理解标题库 #includestdio.h#includelimits.h#includefloat.hint main(){ printf("%lu",ULONG_MAX);} 当我运行这个程序时,我得到了输出 4294967295 等于232 -1.我期待这个值(因为K R在它的附录中具有相同的值).
我正在做K& R C的问题2.1,它基本上要我们搞乱并理解标题库
#include<stdio.h> #include<limits.h> #include<float.h> int main() { printf("%lu",ULONG_MAX); } 当我运行这个程序时,我得到了输出 4294967295 等于232 -1.我期待这个值(因为K& R在它的附录中具有相同的值). 现在我将%lu更改为%llu. 由于我对C语言知之甚少,我假设%llu是ULONG_MAX值的一个更大的“占位符”. 我希望得到相同的输出,但我得到一个模糊的输出 38654705663 ULONG_MAX不应该是常数吗?为什么会改变? 我理解标准提到“最小”这个术语的论点,但是当我用CHAR_MAX测试它时(即尝试用%llu说明符打印CHAR_MAX),我得到了 38654705663 这与我在C中读过有关char的所有内容相矛盾. 真的希望有人能解决这方面的困惑. 解决方法
其他printf()参数的类型必须与使用的占位符匹配.否则行为未定义.
%llu代表unsigned long long,因此你的参数也必须是unsigned long long: printf("%llu",(unsigned long long)ULONG_MAX); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |