黑马程序员技术交流社区

标题: VS溢出的检测问题unchecked() [打印本页]

作者: 顾磊磊    时间: 2013-8-7 19:37
标题: VS溢出的检测问题unchecked()

如上图所示,同样是unchecked修饰,不检测溢出,
为何中间那条myDirection=unchecked((Orientation)334m)不能编译,直接提示不能转换。(只要大于byte的上限就出现这样情况)
但是如果这样写成myDirection=unchecked((Orientation)334)就没有问题,
这是为何?

作者: changvh    时间: 2013-8-8 07:23
因为 Byte 表示一个8 位无符号整数,它只能表达区间[0,255]之间的整数。 400 明显超过了这个范围,400是一个int的常量,而int不支持到byte的隐式转换
作者: 顾磊磊    时间: 2013-8-9 11:14
changvh 发表于 2013-8-8 07:23
因为 Byte 表示一个8 位无符号整数,它只能表达区间[0,255]之间的整数。 400 明显超过了这个范围,400是一个 ...

如果是int型的400就可以这么写。因为unchecked已经表示不检测溢出了啊,decimal类型的400为什么还会检测???




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2