Roy*_*mir -1 c# exception-handling .net-4.0
简单的代码确实:
int number = int.MaxValue;
number = number+1;
Console.WriteLine(number);
Run Code Online (Sandbox Code Playgroud)
问题:
1)应该有overflowException.没有.这是为什么?
2)数字是否-2147483648
表示:
)超出限制大小的字节数是多少?
)如果我明白了-2147483648
,我怎么知道(如果没有例外) - 如果这个数字来自例外? - 我必须用Try Catch包裹吗?
ps当我写道:
int number = int.MinValue;
number = number-1;
Console.WriteLine(--number);
Run Code Online (Sandbox Code Playgroud)
我得到了:( 2147483647
仍然不例外).
应该有overflowException.没有.这是为什么?
默认情况下,C#不执行溢出检查.您可以为整个程序集启用它(在VS的"构建"选项卡的"高级"位中,或/checked+
从命令行)或使用checked
关键字的块/表达式
对于你的问题的第二部分,-2147483648
只是int.MinValue
- 有符号整数这样做,从一个非常大的正数滚动到一个非常大的负数.
例如,如果使用sbyte
(带符号的字节类型):
sbyte number = 127; // sbyte.MaxValue
number++;
Console.WriteLine(number); // Prints -128
Run Code Online (Sandbox Code Playgroud)
这里没什么好笑的 - 这只是正常的2s补充溢出.
或使用byte
(未签名)
byte number = 255; // byte.MaxValue
number++;
Console.WriteLine(number); // Prints 0
Run Code Online (Sandbox Code Playgroud)