c语言中说明符问题,用long long u=55,在用printf()函数输出时,分别用%ld和

c语言中说明符问题,用long long u=55,在用printf()函数输出时,分别用%ld和%lld说明符输出u,为什么两个数不同?%lld说明符输出的是55而%ld却不是,求解?现在自学c primer plus到第3章

%ld的转义字符并不是一定输出不了55.
这个取决于系统对int类型的定义。也取决于你系统的大小端存储问题。
系统类型情况:当你的系统的是16位的,你的int就是2个字节。而long
long
类型是标准的8字节类型不受系统限制,long
int
是标准的4字节。
%lld是long
long
int类型的转义字符。
%ld

long
int
类型的转移字符。此处你的u
=
55.此处并没有超出long
int
的范围所以这种情况输出的都是55.
大小端情况:
举例:
u=55;long
long
int
如果存储方式为:
0x
37
00
00
00
00
00
00
00
同时你的编译器将对long
int
取数为
long
long
int
的低4位。那么你的%ld输出可能是0
如楼上说所,也就是类型不匹配,当然同时取决你的编译器。我使用的gnu
g++
和gnu
gcc
编译你的代码都没有问题。都能输出55
温馨提示:答案为网友推荐,仅供参考
相似回答