对于非负int型数据,不可采用的格式说明是: A、%x B、%d C、%ld D、%u 答案是C,为什么?

2025-05-07 19:26:53
推荐回答(2个)
回答1:

%ld 表示类型long int的输出,如果使用如下方式将会有问题:
int a = 9;
printf("%ld\n", a);
实际上,上面的输出结果是不确定的,因为以a的地址读一个long int长度的数据已经超出了int的存储空间,那么结果是除了读取9之外,还会读取a地址前的4字节数据。
所以答案只能在A,B,D中,原因就在于这里的长度修饰符“l"。

回答2:

%x,%d,%u 肯定都是可以的。

%ld说明要用long类型了,在有的机器里,long 和int不一样的,此时使用int会有问题