-1 を uint に変換しても機能しない "((uint)(-1))" ソリューション?
num10 = ((uint)(-1)) >> (0x20 - num9);
エラー: 定数値 '-1' は 'uint' に変換できません (オーバーライドするには 'unchecked' 構文を使用してください)
-1 を uint に変換しても機能しない "((uint)(-1))" ソリューション?
num10 = ((uint)(-1)) >> (0x20 - num9);
エラー: 定数値 '-1' は 'uint' に変換できません (オーバーライドするには 'unchecked' 構文を使用してください)
使用する
uint minus1 = unchecked((uint)-1);
uint num10 = (minus1) >> (0x20 - num9);
またはさらに良い
uint num10 = (uint.MaxValue) >> (0x20u - num9);
コンパイラは、何をする必要があるかを教えてくれます:
unchecked
{
num10 = ((uint)(-1)) >> (0x20 - num9);
}
ただし、ご希望の結果が得られない場合があります。
符号なし整数は、正の値のみを表すことができます。-1 を表すことはできません。
負の値を表現したい場合は、 のような符号付きの型を使用する必要がありますint
。
未チェックのコンテキストを検索します。