簡體   English   中英

將-1轉換為uint32的目的?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM