【发布时间】:2013-09-28 18:17:44
【问题描述】:
unchecked 关键字在 MSDN 库中已解释为:
unchecked 关键字用于抑制溢出检查 整数型算术运算和转换。在未经检查的 上下文,如果表达式产生的值超出范围 的目标类型,溢出没有被标记。
根据定义,它适用于 int 类型。
例如:
unchecked
{
int i=2147483647+10;
}
这里它抑制了未检查块内的溢出。(应该是)
但是当我们将它应用于字节时它不起作用
byte b1=100,b2=100,b3;
unchecked
{
b3=b1+b2;//error here
}
因此,在未经检查的环境中编写的任何内容都应该被禁止。
为什么会出现编译时错误?
或者我根本不理解 unchecked 关键字?
【问题讨论】:
-
A
byte最多可容纳 255 个,因此无论如何都不会溢出。你的“编译器错误”是什么? -
无法将 int 隐式转换为字节
标签: c#