?為啥是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
提交
取消