Pat*_*ick 41 c c++ printf visual-studio-2010 format-specifiers
我想在C++中使用Microsoft Visual Studio 2010 打印出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++之间的标准是不同的(这对我来说似乎很奇怪)?
Ori*_*rds 18
Microsoft文档 说明:
在
hh,j,z,和t长度前缀不被支持.
因此%zu不受支持.
报告还指出,正确的前缀用于size_t为I-所以你会使用%Iu.
Ale*_*nze 15
微软的C编译器没有赶上最新的C标准.它基本上是一个C89编译器,带有一些来自C99的精选功能(例如long long).因此,不应该支持某些内容(%zuC99中出现).
Pav*_*l P 12
MS Visual Studio之前不支持%zuprintf说明符VS2013.从VS2013开始(例如_MSC_VER> = 1800)%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());
Run Code Online (Sandbox Code Playgroud)
根据这里的答案,%z是C99的补充.由于MSVC不支持任何后来的C标准,因此%z不支持它也就不足为奇了.
| 归档时间: |
|
| 查看次数: |
53184 次 |
| 最近记录: |