このことを考慮
int i = 2147483647;
var n = i + 3;
i = n;
Console.WriteLine(i); // prints -2147483646 (1)
Console.WriteLine(n); // prints -2147483646 (2)
Console.WriteLine(n.GetType()); // prints System.Int32 (3)
私は次のことと混同しています
- (1)intはどのようにして値-2147483646を保持できますか?(int範囲= -2,147,483,648〜2,147,483,647)
- (2)なぜこの印刷は-2147483648であるが、2147483648は印刷されないのですか(int範囲が超える場合、コンパイラはより適切な型を決定する必要があります)
- (3)どこかで変換された場合、なぜn.GetType()がSystem.Int32を与えるのですか?
編集1:修正を行いました:これで、私が取得しているものを取得できます。(そのために残念)
var n = i + 1; に
var n = i + 3;
Edit2:もう1つ、オーバーフローとして発生した場合、例外が発生しないのはなぜですか?
追加:オーバーフローが発生すると、タイプを設定するのは正しくありませんか
var n
var n = i + 3;
それに応じて別のタイプへのステートメントで?
これは意味がないので、より良いタイトルを提案することを歓迎します....少なくとも私
ありがとう