Day10-32.Common pitfalls when using operators

使用操作符時常犯的錯誤


使用操作符時一個常犯的錯誤就是,即使對表達式如何計算有點不確定,也不願意使用括號。

這個問題在Java中仍然存在。

在C和C++中,一個特別常見的錯誤如下:

while(x= y){

//….

}

程序員很明顯是想測試是否“相等”(==),而不是進行賦值操作。

在C和C++中,如果y是一個非零值,name這種賦值的結果肯定是true,而這樣便會得到一個無窮循環。

在Java中,這個表達式的結果並不是布爾值,而編譯器期望的是一個布爾值。

由於Java不會自動將int數值轉換成布爾值,所以在編譯時會拋出一個編譯時錯誤,

從而組織我們進一步去運行程序。

所以這種錯誤在Java中永遠不會出現(唯一一個不會得到編譯時錯誤的情況是x和y都爲布爾值)。

在這種情況下,x=y屬於合法表達式。而在前面的例子中,則可能是一個錯誤。

Java中有一個與C和C++中類似的問題,即使用按位“與”和按位“或”代替邏輯“與”和邏輯“或”。

按位“與”和按位“或”使用單字符(&或|),而邏輯“與”和邏輯“或”使用雙字符(&&或||)。

就像“=”和“==”一樣,鍵入一個字符當然要比鍵入兩個簡單。

Java編譯器可防止這個錯誤放生,因爲它不允許我們隨便把一種類型當做另一種類型來用。


發佈了28 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章