现在的位置: 首页 > 综合 > 正文

这样的面试题你会吗?

2012年01月12日 ⁄ 综合 ⁄ 共 326字 ⁄ 字号 评论关闭
今天一个学生去面试.NET的软件工程师,面试题有这么一道:
short s=0;
s = s + 1;


short s=0;
s += 1;

这两个表达式有什么区别,会报什么错误?

学生不会,我也不会,我的第一反应是这两个语句好像没有什么错误呀,也没什么区别的。

结果在VS2005中一试,第一个编译报错,第二个没有问题。

真的蛮奇怪的,而且觉得出这种面试题的公司也蛮奇怪的

我的理解:
s = s + 1; 由于 1 默认是int型的,s是short的,"s+1"的结果默认是int的,把int的结果赋值给short时会报错,损失精度了,必须写成 s = (short)(s+1) 来强制转化一下

s+=1; 在编译时已经明确最后要赋值给s,即short型的,所以会在内部自动进行转换的 (不知哪位有更好的解释)

抱歉!评论已关闭.