容易出錯的 if 語句

2022-02-01 00:46:26 字數 1172 閱讀 8815

下面列舉幾個容易出錯的if語句例項,如果後續還有新的發現,還會繼續更新!

int n = 5

;

if(n > 0

); printf(

"值為正

");

初次執行,感覺一切正常,沒有錯誤,這時我把n的值改為-5重新編譯後,------結果還是為正。

這是為什麼?

仔細一瞧,我們發現在(n > 0)後面我們多加了個分號!!!

原因:只有乙個分號的語句叫做空語句(執行空語句後什麼也不會發生),因此可以這樣理解:

if(n > 0

) ;

printf(

"值為正

");

若執行該if語句,無論n是什麼值(正、負和0),結果都會顯示「值為正」。

不要把判斷相等性(是否相等)時使用的 == 運算子和 = 混淆。

錯誤: if(a = 0)

正確: if(a == 0)

原因:在第乙個錯誤的例子中,變數a會被賦值為0。另外,不管a的值如何,該語句都不會被執行。

下面是判斷變數a、b、c的值是否相等的例子。

錯誤:if(a == b == c)

正確:if(a == b && b == c)

原因:相等運算子 == 是雙目運算子,所以 a == b == c 不能實現對三個變數的判斷。

下面是判斷變數a是否大於等於3小於等於5的例子。

錯誤:if(3 <= a <= 5)

正確:if(a >= 3 && a <= 5)

下面是判斷變數a是否大於等於3小於等於5的例子。

錯誤:if(a >= 3 & a <= 5)

正確:if(a >= 3 && a <= 5)

原因:邏輯運算子中使用的是 && 或 || 運算子,不要與 & 、| 混淆,它們是不同的。

運算子形式

名稱綜合性

&x & y

按位與運算子左|

x | y

按位或運算子左&&

x && y

邏輯與運算子左||

x || y

邏輯或運算子

容易忽視而出錯的SQL語句

今天在更改字段型別的sql出現了錯誤,還好有大神朋友幫忙指正,大神看一眼sql就發現了問題,我還在被sql日誌帶的轉圈圈,看來我和大神之間的距離不是肉眼可及的。特意回顧了其他常見但是容易忽視而出錯的sql語句。1 新增表字段 alter table 表名 add 欄位名 型別 值 示例 alter ...

C 容易出錯的點

1 c風格字串的兩種形式 1 char a 手動新增結束符 0 2 char a abv 預設新增 0 2 sizeof 返回的值表示的含義如下 單位位元組 陣列 編譯時分配的陣列空間大小 指標 儲存該指標所用的空間大小 儲存該指標的位址的長度,是長整型,應該為4 型別 該型別所佔的空間大小 物件 ...

FlashDevelop 的配置 容易出錯的地方

不知道為什麼總是要我重新配置,有天我突然發現 無法在flashdevelop中trace了。原因是 externalplayer 的 path不知道為什麼沒有了,這裡我列一下需要配置的地方 tool program settings 1 as3context flex sdk 2 ascomplet...