在C语言中,字符串格式化符号
那么,
%zu
和%lu
有什么区别?其中%lu
用于unsigned long
类型的值,而%zu
用于size_t
类型的值。但实际上,size_t
只是一个unsigned long
类型。虽然CppCheck会对此发出警告,但据我的经验,两种符号都适用于这两种类型。那么,
%zu
是不是只是一种标准化的方式来格式化size_t
,因为size_t
常被使用,还是还有其他方面的考虑呢?
size_t
可以是unsigned long long
,那么%lu
就会出错,但%zu
仍然正确。 - Jonathan Lefflersize_t
在实现中只是一个无符号长整型。不,32位的MS VC中size_t
是32位,在64位中是64位。但是long
在两者中都是32位。 - Weather Vaneunsigned long
至少有32位。size_t
至少有16位。 - chux - Reinstate Monica