回答
我假定你的意思uint32_t
,使包括inttypes.h和使用
printf("Value: %" PRIu32 "\n", u32);
缺少「%」號 – FredK
@chqrlie它沒有 –
沒有標準型U32
。
假設它是一個整數類型,可能是一個32位無符號類型的typedef,您可以安全地打印出值是這樣的:
printf("%lu\n", (unsigned long)u32);
我用unsigned long
而不是unsigned int
因爲unsigned int
可以合法僅16位寬。 unsigned long
保證至少爲32位寬,因此它可以保存u32
類型的任何可能的值(假設u32
被定義爲理智的)。對於64位無符號類型,您可以安全使用unsigned long long
和"%llu"
。
從C99開始,標準C庫包含一個標頭<stdint.h>
,該標頭定義了固定寬度類型,包括uint32_t
,它可能與U32
的屬性相同。我不建議對工作代碼進行大規模修改,只是使用標準化的typedef,但在新代碼中,您應該使用uint32_t
。標準頭<inttypes.h>
定義宏的使用與printf
,讓你寫,爲iharob's answer suggests:
uint32_t u32;
printf("%" PRIu32 "\n", u32);
(PRIu32
擴展爲一個字符串;三個文字"%"
,PRIu32
和"\n"
是由編譯器連接在一起。)
雖然我個人發現宏名稱(記錄在N1570第7.8節)難以記憶。我經常只是將其轉換爲我知道的足夠寬的預定義類型,如上所示。
當不確定使用什麼格式說明打印一些整數:
如果類型在C像
int, unsigned long long, size_t, uint8_t
等指定類型,最好先使用的匹配符"%d", "%llu", "%zu", "%" PRIu8
等衆多資源列出相應的類型爲說明符。#include <inttypes.h> printf("%" PRIu32 "\n", u32); // type known to be 32-bit unsigned - no padding.
當類型的標準類型的關係不明確,但其正負號的煩躁是已知的,代碼可轉換爲相應的寬型。
#include <stdint.h> printf("%ju\n", (uintmax_t) u32); // type is known to be some unsigned integer
- 1. C++用的printf
- 2. 用printf在c
- 3. 的printf在用C
- 4. 叉(c)中使用的printf
- 5. 關於給printf用C
- 6. C到C++ printf
- 7. 用printf
- 8. c printf signed float
- 9. C stdout printf
- 10. C編程printf
- 11. C printf輸出
- 12. C++ printf舍入?
- 13. 使用%d和%f的C printf
- 14. 在win32上使用mingw的C printf()
- 15. 在printf中使用語句體C
- 16. 不與FUNC printf的理解用C
- 17. 用於Java的C兼容printf輸出
- 18. 從程序集調用C printf
- 19. 的printf在C不佔用內存?
- 20. C - 使用%s和char重複printf()*
- 21. C - 管道使用printf和scanf ..暫停
- 22. 使用printf(「%s」,&Buffer [i]); in C
- 23. C:使用printf打印%符號
- 24. 爲什麼不在C++中使用printf()
- 25. 如何用printf
- 26. 使用%。 in printf
- 27. 打印 '%' 與C的printf/C++
- 28. C++的cout像C的printf
- 29. C printf NSDATA(Objective C類型)
- 30. C printf格式化
u32是什麼類型的?它是如何聲明的? –
產生了什麼錯誤? – rici
給***什麼***錯誤?你沒有注意到'u32''中的語法錯誤嗎?我確定編譯器確實如此。你建議的cast((int)u32')無論如何都是錯誤的:'%u'是* unsigned *。 –