Size_t
定义为一个unsigned
整数,但其大小取决于您在32位还是64位机器上。什么是打印出size_t
的正确便携方式?使用printf打印size_t的正确方法是什么?
57
A
回答
83
尝试使用%zu
格式字符串
size_t val = get_the_value();
printf("%zu",val);
在Z部分是长度说明符表示的参数将在长度size_t型。
来源 - http://en.wikipedia.org/wiki/Printf#printf_format_placeholders
8
有一个C++标签上的这一点,所以cout <<
是另一种可能的答案。
这在C的所有版本中都令人惊讶地很难找到。在C90中,铸造到unsigned long
应该可行,但在C99中可能不适用,并且C99解决方案不一定适用于C90。在1995年的变化中引入了可靠区分C90和C99的能力(指定了__STDC__
的允许值)。我不认为有一种适用于C90,C99和C++的完全可移植的方法,尽管这些解决方案可以用于任何一种解决方案。
7
我认为C++的答案是:
std::size_t n = 1;
std::cout << n;
对于C风格的IO这是一个稍微复杂一点。在C99中,他们为size_t
值添加了z
长度修饰符。然而,先前对TR1-这是不支持,所以你只剩下浇铸到一个特定的大小,如:
std::size_t n = 1;
std::printf("%lu\n", static_cast<unsigned long>(n));
话又说回来,unsigned long long
是不是真的用C支持++反正所以上面将正常工作,因为unsigned long
是最大的法律整体类型。在TR1之后,您可以安全地使用%zu
获取size_t
的值。
相关问题
- 1. 为什么这个long double打印不正确使用printf?
- 2. printf打印不正确
- 3. 打印rlim_t类型值的正确方法是什么?
- 4. ArrayLists打印并发症,什么是正确的方法?
- 5. 什么是打印Python例外的正确方法?
- 6. 使用MYSQL打印多个数据的正确方法是什么?
- 7. C - 为什么printf不只是打印?
- 8. printf()不打印正确的计算
- 9. 什么时候打印我的报表的正确方法?
- 10. 正确的方式scanf和printf size_t变量(平台无关)
- 11. 什么是通过libcups以编程方式打印双工的正确方法?
- 12. 为什么下面的printf打印0x32
- 13. 什么是使用AttributeCollection.Render方法的正确方法?
- 14. 什么是使用findBy'Field方法的正确方法?
- 15. 使用android.text.format.DateFormat.format方法的正确方法是什么
- 16. 什么是测试方法时使用mock的正确方法?
- 17. 什么是打包企业应用程序的正确方法
- 18. 什么是在Java控制台上打印.dat的正确方法?
- 19. 在python中打印斐波那契数列的正确方法是什么
- 20. 使用Angular在AWS上打击/使用API的正确方法是什么?
- 21. 打印QCView的正确方法
- 22. 为什么第二个printf打印0
- 23. c printf(“%x”),它打印什么?
- 24. 为什么printf不打印垃圾值?
- 25. 使用NSURLSessionDownloadTask时使用resumeData的正确方法是什么?
- 26. AngularJS - 这是什么正确的方法?
- 27. 什么是SPOJ COURIER的正确方法
- 28. reactjs中的正确方法是什么?
- 29. QSqlDatabase&QSqlQuery的正确方法是什么?
- 30. 做SlideAnimation的正确方法是什么?
可能的重复[跨平台格式字符串的变量的类型大小\ _t?](http://stackoverflow.com/questions/174612/cross-platform-format-string-for-variables-of-type-size -t) – 2015-10-02 09:31:12