7

-1 を uint に変換しても機能しない "((uint)(-1))" ソリューション?

num10 = ((uint)(-1)) >> (0x20 - num9);

エラー: 定数値 '-1' は 'uint' に変換できません (オーバーライドするには 'unchecked' 構文を使用してください)

4

5 に答える 5

11

使用する

uint minus1 = unchecked((uint)-1);
uint num10 = (minus1) >> (0x20 - num9);

またはさらに良い

uint num10 = (uint.MaxValue) >> (0x20u - num9);
于 2013-03-17T06:04:05.060 に答える
2

コンパイラは、何をする必要があるかを教えてくれます:

unchecked
{
     num10 = ((uint)(-1)) >> (0x20 - num9);
}

ただし、ご希望の結果が得られない場合があります。

于 2013-03-17T06:03:55.933 に答える
1

符号なし整数は、正の値のみを表すことができます。-1 を表すことはできません。

負の値を表現したい場合は、 のような符号付きの型を使用する必要がありますint

于 2013-03-17T06:03:25.797 に答える
1

チェックのコンテキストを検索します。

于 2013-03-17T06:04:18.483 に答える