私はとてもトリッキーなC#試験を準備していますが、その間にこの問題が発生しました。 私は次のコードを持っている:C#int32リテラルは長いデータ型でしか格納できません
uint zzz = -12u;
-12u
はSystem.Uint32
リテラルとして認識されているが、それは唯一のタイプlong
の変数に格納することができます。何故ですか ?
私はとてもトリッキーなC#試験を準備していますが、その間にこの問題が発生しました。 私は次のコードを持っている:C#int32リテラルは長いデータ型でしか格納できません
uint zzz = -12u;
-12u
はSystem.Uint32
リテラルとして認識されているが、それは唯一のタイプlong
の変数に格納することができます。何故ですか ?
それがしていることは、unsigned int 12をとり、それを負の値(-
)に変換しようとしています。この場合、unsigned intとして負の数を扱うことができる型に変換する必要があります。
unsigned intなので、intの範囲外の値がある可能性があるため、longへの変換が必要です。
はい。 [整数リテラル仕様](http://msdn.microsoft.com/en-us/library/aa664674.aspx)を見ると、マイナス記号がリテラルの一部ではないことがわかります。 'uint'を呼び出し、それを否定するときに' long'に広げる必要があります。 – Rawling
私が思っていたことをありがとう、ありがとう。 –
u
をするためのものであるので、unsigned int型
取り扱いは、Longデータ型に変換署名-ve
-12uそれはlong
データ型を使用unsigned
型に格納するための符号付き整数データ型&であるため
「u」が何を表しているか知っていますか? –
符号なしのintは符号なしとされているので、私は推測していますか? –
ヒント: "-12uがSystem.Uint32として認識されました"が間違っています。 「12uがSystem.Uint32として認識されている」と言うのは正しいでしょう。 – vcsjones