2014-12-04 87 views
2

查看標題。 1==(int)0.5*2的計算結果爲false,但1==((int)0.5*2)的計算結果爲true。但是(1==(int)0.5)*2會給出一個錯誤,所以第一個表達式不會像這樣被解析。不知何故,1==((int)0.5*2)的額外括號正在改變演員和乘員的優先順序。1 ==(int)0.5 * 2 => false,1 ==((int)0.5 * 2)=> true,爲什麼?

這到底是什麼原因造成的?這是應該發生還是它是一個解析錯誤?

回答

1

這是表達應該如何看起來像:

1 == 0.5*2 as int //--> true 
1 == (int)(0.5*2) //--> true 

這一個:

1==(int)0.5*2 

false,如(int)0.5 == 0

這一個:(1==(int)0.5)*2沒有在任何意義所有,因爲你試圖乘以false(見前面的例子)2,這是不允許的

+0

我明白表達式是如何評估的,我的問題是爲什麼'1 ==((int)0.5 * 2)'中的額外括號會在評估中產生差異。 – JanKanis 2014-12-04 11:18:27

相關問題