-1
在進行int劃分與演員表演或隱式演員表演之間是否存在任何差異隱式強制轉換或正常強制轉換除以2個整數?
例如,
int a = 7;
int b = 3;
float x = ((float)a)/b;
or
float y = (a+0f)/b;
在進行int劃分與演員表演或隱式演員表演之間是否存在任何差異隱式強制轉換或正常強制轉換除以2個整數?
例如,
int a = 7;
int b = 3;
float x = ((float)a)/b;
or
float y = (a+0f)/b;
正如註釋所指出的,由於運算符優先規則,兩個版本是不同的。
float y = a + 0f/b;
實際上相當於
float y = a + (0f/b);
即
float y = a;
你應該寫
float y = (a + 0f)/b;
前提是你得運算符優先級正確的,沒有任何區別,塞曼或者在性能方面。 (JIT編譯器極有可能優化掉人工添加0)。
但是,有一個重要的區別。你的第二種形式是不尋常的成語,而不尋常的成語會讓其他人更難閱讀你的代碼。最好把你的代碼寫成「正常」的方式......如果你(或你的老闆)預計其他人可能需要閱讀/維護它。
(如果你決定你得到運算符優先級錯誤的習慣,他們可能需要閱讀你的代碼遲早比你預期... :-))
兩種說法都沒有甚至相等。 '0f/b'只是'0.0'。 –
這些是非常不同的陳述,因爲由於運算符的優先級,你的第二個計算結果爲'a +(0f/b)'。 – ApproachingDarknessFish
即使你有正確的括號,'(a + 0f)/ b'看起來很傻。你的意圖是將'a'轉換爲'float',那麼爲什麼不使用其目的是將'a'轉換爲'float'的構造呢?但從語義上講,沒有區別。 – ajb