黑马程序员技术交流社区

标题: 自学视频中,关于变量运算的小疑问 [打印本页]

作者: belowfox    时间: 2016-7-20 16:01
标题: 自学视频中,关于变量运算的小疑问
本帖最后由 belowfox 于 2016-7-26 17:39 编辑

为什么
  1. int b1 = 2147483647;
  2. int b2 = 2;
  3. int b3 = b1 + b2;
复制代码

输出b3=-2147483647,超出int范围前面的被省了。
  1. byte b1 = 127;
  2. byte b2 = 2;
  3. byte b3 = b1 + b2;
复制代码

就会报错呢?而不是像上面一样强制转换?
作者: 15105106710    时间: 2016-7-20 23:22
    因为系统中整数默认的是int类型,如果没有特殊要求便会在int类型取值范围内进行循环;long类型的数据后面是要加上L或者l用来区别int类型。
    而byte类型不是默认形式,因此必须使用强制转换来实现在byte取值范围内进行循环,例如byte128的取值就是-128一样,超过部分开始循环。
    就好比英语是默认公用语言,到哪都可以正常使用;而中文不是默认形式,你跟外国人用中文交流是不行的,你要真想用中文交流,那你就必须强制老外学习好中文才能交流一样吧!我是这么理解的。希望能够帮助到你。
作者: qetu001212    时间: 2016-7-20 23:27
这个不会强转的,会直接报错
作者: belowfox    时间: 2016-7-21 18:49
大概懂了
作者: belowfox    时间: 2016-7-21 19:04
为什么我找不到结束提问的按钮,难道我发帖发错地方了?????




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