我想使用 Microsoft Visual Studio 2010 在 C++ 中使用
size_t
打印出 printf
变量的值(我想在这段特定的代码中使用 printf
而不是 <<
,所以请不要告诉答案我应该用 <<
来代替)。
根据帖子
正确的与平台无关的方法是使用
%zu
,但这在Visual Studio中似乎不起作用。 Visual Studio 文档位于
http://msdn.microsoft.com/en-us/library/vstudio/tcxf1dw6.aspx
告诉我必须使用
%Iu
(使用大写 i
,而不是小写 l
)。
微软不遵循这里的标准吗?或者说自C99以来标准已经改变了?或者 C 和 C++ 之间的标准不同(这对我来说似乎很奇怪)?
MS Visual Studio 在
%zu
之前不支持 VS2013
printf 说明符。从 VS2015 开始(例如 _MSC_VER
>= 1900
)%zu
可用。
作为替代方案,对于以前版本的 Visual Studio,如果要打印较小的值(例如 std 容器中的元素数量),您可以简单地转换为
int
并使用 %d
:
printf("count: %d\n", (int)str.size()); // less digital ink spent
// or:
printf("count: %u\n", (unsigned)str.size());
微软的C编译器没有赶上最新的C标准。它基本上是一个 C89 编译器,具有一些从 C99 中精选的功能(例如
long long
)。因此,某些内容不受支持也就不足为奇了(%zu
出现在 C99 中)。