Bro*_*m35 6 c printf size-t string-formatting
%zuC 中的字符串格式化和之间有什么区别%lu?%lu用于unsigned long值并%zu用于size_t值,但实际上,size_t只是一个unsigned long. CppCheck 对此有所抱怨,但根据我的经验,这两种类型都适用。
只是%zu一种标准化的格式化方式,size_t因为size_t很常用,还是还有更多内容?
但在实践中,
size_t这只是一个unsigned long
不必要。有 32 位long和 64 位的系统size_t。MSVC 就是其中之一。
鉴于以下情况:
printf("long: %zu\n", sizeof(long));
printf("long long: %zu\n", sizeof(long long));
printf("size_t: %zu\n", sizeof(size_t));
Run Code Online (Sandbox Code Playgroud)
在 x86 模式下的 MSVC 2015 下编译输出:
printf("long: %zu\n", sizeof(long));
printf("long long: %zu\n", sizeof(long long));
printf("size_t: %zu\n", sizeof(size_t));
Run Code Online (Sandbox Code Playgroud)
在 x64 模式下编译时输出:
long: 4
long long: 8
size_t: 4
Run Code Online (Sandbox Code Playgroud)
有一个单独的尺寸修饰符可size_t确保您使用正确的尺寸。