2016-12-01 29 views
-3

他們說c中的宏從不檢查數據類型,它只是用右側替換左側。那麼爲什麼人們明確定義0x01u,他們可以簡單地說爲0x01?在C編程宏從來沒有做過類型檢查?那麼定義宏0x01和0x01u有什麼區別?

+2

在使用宏的地方將進行檢查 –

+2

宏(預處理程序)未鍵入檢查;編譯器會在使用擴展宏的結果時執行此操作。 –

+0

「...宏從來沒有做過類型檢查」 - 這可能意味着不止一件事。澄清,你究竟在問什麼。 – AnT

回答

-1

它定義了一個unsigned整數字面值。您還可以通過使用0x…UL來查看他們將十六進制文字定義爲unsigned long整數的位置。

如果您想知道它們生成的位模式,只需將小數文字轉換爲其等效的十六進制或二進制文字。 1U分別以十六進制和二進制形式變爲0x01U01b

另一個更常見的文字使用f後綴,即單精度浮點文字,如1.0f

1.僅供參考;不是每個C標準的實際有效二進制文字。對於二進制文字,C++ 14支持0b01(和0b0000'0001一樣有趣,'作爲分組字符)。

+0

請再次閱讀這個問題,你的回答似乎沒有幫助OP – user2728397

+1

@Rakesh_K我雖然問他U符號的目的是什麼。所以我刪除了我的帖子。謝謝你通知我。 –

0

在其中宏用於在支票上的地方將作出 - 貝恩德Elkemann

宏(預處理)不類型檢查;編譯器會在使用擴展宏的結果時執行此操作。 - Jonathan Leffler

相關問題