取這兩個片段,例如:爪哇類型轉換混亂
情況1:
Scanner s = new Scanner(System.in);
int n = s.nextInt(); /** take user input **/
n *= Double.NEGATIVE_INFINITY;
和
情況2:
int k=10;
double kk = 10.10;
int rst = k*kk;
在這兩種情況下,我沒有做任何類型從我身邊,但案例1正確執行並打印n
的值,但案例2拋出一個錯誤,can not convert from double to int
。爲什麼這個區別?
因爲'* ='(和'+ ='和它的親屬)在左參數的類型來計算。然而''''「促進」參數到「最寬」參數的類型。 –
@zapl:同樣的錯誤! – NoobEditor
因爲'n * = Double.NEGATIVE_INFINITY'是'n =(int)(n * Double.NEGATIVE_INFINITY)' – johnchen902