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. ArrayLists打印併發症,什麼是正確的方法?
- 3. 什麼是打印Python例外的正確方法?
- 4. 使用MYSQL打印多個數據的正確方法是什麼?
- 5. printf()不打印正確的計算
- 6. 什麼時候打印我的報表的正確方法?
- 7. 正確的方式scanf和printf size_t變量(平臺無關)
- 8. 爲什麼下面的printf打印0x32
- 9. 什麼是使用AttributeCollection.Render方法的正確方法?
- 10. 什麼是使用findBy'Field方法的正確方法?
- 11. 什麼是在Java控制檯上打印.dat的正確方法?
- 12. 在python中打印斐波那契數列的正確方法是什麼
- 13. 使用Angular在AWS上打擊/使用API的正確方法是什麼?
- 14. 打印QCView的正確方法
- 15. 爲什麼printf不打印垃圾值?
- 16. c printf(「%x」),它打印什麼?
- 17. printf for size_t
- 18. reactjs中的正確方法是什麼?
- 19. C++ API - 什麼是正確的方法
- 20. 什麼是正確的設計方法?
- 21. 這是做什麼的正確方法?
- 22. QSqlDatabase&QSqlQuery的正確方法是什麼?
- 23. 爲什麼ArrayList不能正確打印?
- 24. 什麼是使用NLTK停用詞的正確方法?
- 25. 什麼是使用Java DOM調用getAttributeNS的正確方法?
- 26. 使用EL到達用戶名的正確方法是什麼?
- 27. 爲什麼printf在C中返回int而不是size_t
- 28. 將int打印爲float時,printf的行爲是什麼?
- 29. 如何使printf()正確地從宏內打印二進制blob?
- 30. 調用d.dispose()或s.cancel()方法的正確方法是什麼?
可能的重複[跨平臺格式字符串的變量的類型大小\ _t?](http://stackoverflow.com/questions/174612/cross-platform-format-string-for-variables-of-type-size -t) – 2015-10-02 09:31:12