猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
三目运算符 表达式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可能损失精度,故报错。
0
0
0
杨魅力
第二个报错是因为你的90跟100.0类型不一致吧???如果一致,应该不报错。。。
0
0
0
慕仙森
你直接输出s1,s2不久知道了...
0
0
0
慕工程0101907
s1和s2的类型不一致,肯定返回false啊
0
0
0
慕容森
类型不一致吧。所以会报错吧。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续