假設我有,例如,uint32_t
類型的變量i
。打印出來的預期的方法是這樣的:在預期PRIu32的printf格式字符串中使用%lu是否有效?
printf("%"PRIu32"\n", i);
但是,應該指出的是,它需要long unsigned int
至少爲32位寬。 long unsigned int
的正確說明符是%lu
。因此,上面的陳述可以被替換爲:
printf("%lu\n", i);
我想是的,因爲我看不到沒有理由。然而,如果是的話,那麼這將消除像PRIu32這樣的宏化指定符的存在需要,所以我想我最好問。
我問這個問題的原因是我想動態地爲printf
創建一個格式字符串,如果我不知道字符串的大小,就很難爲這個格式字符串分配空間PRIu32
擴展爲(以及sizeof(PRIu32)
是否有效可能值得單獨提問)。
在任何情況下,我想這應該是有效的寫:
printf("%lu\n", (long unsigned)i);
您的以下C99或C89標準是什麼? – LethalProgrammer
@LethalProgrammer C11。 – gaazkam
好的,你已經得到了答案。 – LethalProgrammer