根據this,而不類型後綴整數常量總是int
秒。然而,gcc和clang都將0xffffffff
(或任何明確設置除使用-
以外的符號位的文字)解釋爲無符號。哪個是對的? (根據this的編譯器)是在C字面0xffffffff的int或unsigned ++
22
A
回答
25
每個段落的C++ 11標準2.14.2/2,
類型字面的整數的是所述第一表6在相應列表的其價值可以代表 。
表6報道,對於十六進制常數,類型應該是:
int
;或(如果它不適合)unsigned int
;或(如果它不適合)long int
;或(如果它不適合)unsigned long int
;或(如果它不適合)long long int
;或者unsigned long long int
。
假設你實現了32位int
,因爲0xffffffff
不以int
適合,它的類型應該是unsigned int
。對於使用64位int
的實現,類型將爲int
。
注意的是,如果你寫了相同的文字作爲小數常數代替,類型可能僅獲:
int
;或(如果它不適合)long int
;或(如果它不適合)long long int
。
+0
有趣。如果可能的話,請把報價鏈接到它的在線網頁上嗎? – deepmax
+7
@MM .:這是C++ 11標準(我正在使用草案3485,比官方標準稍微更新)。草案可從[here]免費下載(http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3485.pdf)。官方標準付費。 –
相關問題
- 1. MISRA錯誤:字段類型應該是int,unsigned int或signed int
- 2. unsigned int的VS在C++
- 3. 調用'(std :: pair <unsigned int,unsigned int>)(unsigned int&,unsigned int)'
- 4. C/C++:如何正確地將「unsigned int *」值轉換爲「unsigned int」?
- 5. int是否與unsigned或signed相同?
- 6. unsigned int的載體C++
- 7. sqlite C++和unsigned int鍵
- 8. C++ unsigned int雙重轉換
- 9. C++:隱蔽INT爲unsigned char
- 10. '*(unsigned int *)((unsigned int)block + n * i)是什麼意思'
- 11. unsigned int T = 0xFFFFFFFF等於-1在C?它不應該作爲2無符號後正確的工作嗎?
- 12. 關於產品在C unsigned int類型
- 13. Unsigned char char *和int在C中?
- 14. 在C浮點unsigned int類型
- 15. INT推廣在C unsigned int類型和C#
- 16. C和C++奇數語法「unsigned int:32;」
- 17. 如何檢查類型是否是Java中的unsigned int或signed int?
- 18. Java - derby - unsigned int
- 19. 負unsigned int?
- 20. encoding unsigned int
- 21. DWORD和unsigned int
- 22. unsigned long long int
- 23. modulo with unsigned int
- 24. signed/unsigned int
- 25. C++中signed int和unsigned short的比較
- 26. 回顧C++中unsigned int的範圍?
- 27. 如何將c中的unsigned char *轉換爲unsigned int *?
- 28. C++中較少的CPU使用率:聲明爲unsigned int或不?
- 29. long unsigned int和unsigned long int有什麼區別int
- 30. 將void *賦給UINT或unsigned int
我不知道,但我想知道爲什麼它很重要。 –
@roger_rowland沒有,大概,但鐺警告我,從簽名到轉換籤署,這是惱人的和我不明白 – Walter
我猜的一點是爲0xffffffff = 4294967295是正數,不適合在INT。 –