A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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;
复制代码

就会报错呢?而不是像上面一样强制转换?

4 个回复

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