[英]Purpose of casting -1 to uint32?
對於有經驗的C ++開發人員來說,這可能是一個非常愚蠢的問題,但是將-1轉換為uint32的目的是什么? 我正在將一個程序從C ++翻譯成C#,在很多場合我看到這樣的東西:
static const uint32 AllTypes = static_cast<uint32>(-1);
這到底是做什么的? 如何在C#中實現同樣的目標?
在使用二進制補碼的系統上,將-1
為無符號表示無符號數表示的最高值。
在C#中,您可以使用unchecked((UInt32)-1)
或更好: UInt32.MaxValue
。 這是明確定義的行為,適用於所有CPU架構。
根據線程rve鏈接 ,將-1
為無符號會導致在C ++中的所有體系結構上設置所有位。
如何在C#中完成同樣的事情
uint AllTypes = uint.MaxValue;
我想它已經習慣了將所有位都設置為1.當我們使用標記數據時很有用。 可能每種基本類型都有一些,而“復雜”類型(例如數組)可以得到它們自己的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.