C语言中长整型的输出格式是否必须是%ld?

C语言中长整型的输出格式是否必须是%ld?

我在程序中用%d之后 输出的C值也没有问题

int a=10;
long b=21;
float c=3.8;
printf ("a=%d,b=%d,c=%3.1f\n",a,b,c);

这是怎么回事?

这个和编译器有关。
在32位编译器和编译模式下,int 和 long 是等同的,都是32bit 整数,因此 %d 和 %ld 也是等同的。
ld是16位下使用的格式,在目前流行的32位模式下,这个不是标准输出格式了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-12
当C的值太大,超过普通整型int的范围的时候,%d输出就有问题了。

但是对现在的C编译器来说,没有很大的差别。都是输出4字节的整型。

所以用%ld或者%d都没有问题的。
第2个回答  2014-09-12
C语言只规定short <= int <=long int,
int的取值范围-32768~32767绝对够用了,现在大多数开发环境都是用32位的,所以范围远远超出65535,可达到4294967296
第3个回答  2014-09-12
当然是的。