猿问

三目运算符 表达式1?表达式2:表达式3

 为啥是false呢?
 还有,
double s3 = i<100?90:100.0;     //不报错
int s3 = i<100?90:100.0;     //报错
说明 这个三母运算符返回值是一个浮点数,而不再是原来的整型数90了

这中间发生什么了
桃花长相依
浏览 1161回答 5
5回答

拉风的咖菲猫

如果两个操作数中有一个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可能损失精度,故报错。

杨魅力

第二个报错是因为你的90跟100.0类型不一致吧???如果一致,应该不报错。。。

慕仙森

你直接输出s1,s2不久知道了...

慕工程0101907

s1和s2的类型不一致,肯定返回false啊

慕容森

类型不一致吧。所以会报错吧。
随时随地看视频慕课网APP

相关分类

Java
我要回答