黑马程序员技术交流社区
标题:
面试题
[打印本页]
作者:
zhang2745387
时间:
2015-8-6 22:11
标题:
面试题
short s = 1;
s = s + 1;
和
short s = 1;
s+=1;
有问题吗?为什么呢?
作者:
白面馅包子
时间:
2015-8-6 22:12
本帖最后由 白面馅包子 于 2015-8-6 22:16 编辑
当然有问题啊 类型转换问题第一个 s=s+1 右边运算自动提升int类型 左边是short 类型 报错
第二个+=蕴含强制转换 不报错
作者:
aa233192133
时间:
2015-8-6 22:20
刚来没多久老师就说过这题了
作者:
晓月残魂
时间:
2015-8-6 22:22
第一个:
s=s+1; s是short类型,整数默认是int类型,运算时会被s提升为int类型,所以结果是short的s 被赋值成了int类型的数,所以报错
第二个
s+=1; 相当于 s = (short)(s+1) s+1 与上面情况一样,只是结果被强转
作者:
明月刀割芳草
时间:
2015-8-6 22:23
这就是面试题?
作者:
IT老鹰
时间:
2015-8-6 22:26
这估计是基础班的面试题吧?
作者:
rxtm
时间:
2015-8-7 00:27
这题我见过
作者:
FateYin
时间:
2015-8-7 00:29
肯定有问题啊, 第一个s=s+1; 直接就编译出错了,因为s+1的时候 1是int类型的 会报错,说可能会损失精度 第二个其实是自动强制类型转换了。
作者:
真实姓名被注册
时间:
2015-8-7 00:31
赋值操作隐含类型强转
作者:
godboy001
时间:
2015-8-8 09:21
第一个上面左边的s是short类型,两个字节16位,s+1后变成16位int值,再赋值给short类型,位数不对,不能赋值,除非强转,下面的表达式默认强转
作者:
STARlove
时间:
2015-8-8 09:47
前者 报错 。。后者 不报错。。
s += 1;等价于s = (short)(s + 1);含有强制转换。。
前者1为 int 型数据,所以 从大到小会报错
作者:
keviner
时间:
2015-8-8 10:16
第一要手动转换,否则类型错误,第二个自动强制转换,不报错
作者:
xp2015
时间:
2015-8-8 11:13
有问题的
short s = 1;
s = s +1;// s + 1,s自动提升为int类 结果2为int型 无法赋值给左边的short类型s 报损失精度的错误。
short s = 1;
s += 1;// 只要记住:+=、*=、/=等运算具有隐藏的自动强制类型转换的功能,效果同 s = (short)(s+1) 无问题。
作者:
何时指点江山
时间:
2015-8-8 12:43
上边那个编译的时候会报错:损失精度,因为s是short类型的数据,而1是int类型的数据,不能直接相加,需要先把s提升到int类型才行,s+1计算之后是int类型的数据,再赋值给s是需要把这个结果转换成short才能赋值成功;第二个已经隐含了转换类型这个动作,可以成功编译
作者:
zsx6688
时间:
2015-8-8 15:40
第一个s=s+1系统会默认的将右边的值变为int类型,然后赋给左边的s,因此会出现系统出现精读错误
作者:
zhang2745387
时间:
2015-8-8 20:36
mashasha_hm 发表于 2015-8-8 13:09
这时就业班的面试题吗?
对,就是就业班的面试题,老师讲过的
作者:
lingxia125
时间:
2015-8-8 20:53
第一个会编译失败,第二个是左右两边同时相加,自动转型
作者:
一叶泛舟
时间:
2015-8-8 21:30
第一个右边默认的是int,会报错,第二个是自带强制类型转换
作者:
大头爱傻瓜
时间:
2015-8-8 21:31
来晚了,但是还是要说说,有默认的强制类型转换
作者:
3174918418
时间:
2015-8-8 21:36
这题我写错过
作者:
两木三水
时间:
2015-8-8 22:21
没事逛逛,还是可以学到好多东西的
作者:
黑进制
时间:
2015-8-8 23:02
第一个报错
作者:
kenfans
时间:
2015-8-8 23:03
又是类型转换的问题
作者:
徐鹏辰
时间:
2015-8-8 23:16
s = s + 1; 报错 该代码是两步运算,先加和后赋值。s是short类型,1是int类型,当加和时s会类型提升为int,int类型不能赋值为short类型。
s+=1; 编译通过 是一步运算,不会发生类型转换
作者:
MKOSTO
时间:
2015-8-9 00:13
终于遇到我会的题目了
作者:
wang949055945
时间:
2015-8-9 00:32
面试还问其他的什么了吗
作者:
Holmes
时间:
2015-8-9 09:45
学习了。。。。。。
作者:
肋肋
时间:
2015-8-9 16:37
1报损失精度,2不会~
作者:
JustForYou
时间:
2015-8-9 17:38
讲过的题
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2