hzbn.net
当前位置:首页>>关于s1 short..的资料>>

s1 short..

赋值表达式等号两侧的转换的规则是右侧的向左侧的看齐,即右侧表达式要转换到和左边的类型一样。short s1 = 1; s1 = s1 + 1;错! s1 + 1,s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向左侧的short类型的s1...

前面的会报错,因为s1+1结果是int型,需要强制转换,而+=这个运算具有隐式转换的功能,所以不会报错。

对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型 再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。 对于short s1 = 1; s1 += 1 由于 += 是java语言规定的运算符 java编译器会对它进行特殊...

前面一句中,s1 = s1 + 1需要进行强转,写成s1 = (short)(s1 + 1)。 后面一句没错。 1、Java规范有这样的规则 [ a.高位转低位需要强制转换 b.低位转高位自动转. ] 2、short s1 = 1; s1 = s1 + 1;中,1 是int 型 s1 short型 通过 + 运算后s1 自动...

这个不是写法的问题,而是你的类型的问题,short。 s1=s1+1; //这是一个短整型和一个整型运算,然后运算结果s1被强行自动升级为整形,而最初s1是声明为短整型的,显然矛盾,肯定会报错。 s1+= 1; //这种写法,强制把1转换成short类型了,当然不...

因为byte、 short、 int 不会互相转换,它们三者在计算时会转换成 int 类型。 而“+”是算术运算符,有算术运算符,就是已经在运算了,所以结果会转成int 类型。 如果把 int 类型的结果赋给 byte、short类型的结果,必须加上强制声明。 所以, 上...

s1 = s1 + 1需要进行强转,写成s1 = (short)(s1 + 1)就不报错了

short s1 = 1; 赋值的时候只要没超过short的最大范围就没有错; 但是进行 运算时, byte + byte 最少就要用 short 进行保存; short + short 最少就要用 int 进行保存 以此类推

这里涉及到变量类型统一的问题 有这样的规则,1.高位转低位需要强制转换 2.低位转高位自动转. short s1 = 1; s1 = s1 + 1;有什么错? 答: i 是int 型 s1 short型 通过 + 运算后 s1 自动转为int 型 所以错! short s1 = 1; s1 += 1;有什么错? 答: 如...

你的理解是对的。强制转换是程序员的意志,编译器当然不能阻止,但因此造成的丢失精度也由程序员自己承担。

网站首页 | 网站地图
All rights reserved Powered by www.hzbn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com