为啥是false呢?
还有,double s3 = i<100?90:100.0; //不报错int s3 = i<100?90:100.0; //报错说明 这个三母运算符返回值是一个浮点数,而不再是原来的整型数90了这中间发生什么了
5 回答
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
- 如果两个操作数中有一个double类型,另一个操作数就会转换为double类型。
- 否则,如果其中一个操作数为float类型,另一个操作数就会转换为float类型。
- 否则,如果其中一个操作数是long类型,另一个操作数就会转换为long类型。
- 否则,两个操作数都将被转换为int类型。
上面是转换规则,你的三目操作符中有double类型的值,所以会转换成double类型比较,最后得到的结果是s1="90",s2="90.0",调用equals后自然不等了。
按照上述转换规则,int s3 = i<100?90:100.0; 返回的值是double类型的,赋值给int类型的s3可能损失精度,故报错。
添加回答
举报
0/150
提交
取消