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