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