乙個型別轉換的bug

2021-05-24 05:14:49 字數 384 閱讀 7558

int a = -10;

unsigned int b = 5;

if (a > b) else

有經驗的人一看上面的**,就知道有問題,「>」會讓int型降為unsigned int,結果會是列印出「big」,因為-10轉成unsigned int肯定比5大多了。

雖然是個小bug,卻是第一次撞上,因為我以前如果拿變數做計數,通常是給size_t型別,所以還真不容易遇到。查了一下gcc的文件,想要針對這種情況報warning,必須加乙個編譯選項:

-wsign-compare

也可以用

-wextra

但是-wextra報錯就會特別多,連main函式裡的argc和argv沒有被用到也會報出來,嗯,適合重口味的開發者。

乙個int型別引發的bug

今天我在專案開發中,遭遇了乙個莫名其妙的問題,概括加抽象後形成如下問題 在使用mybatis的xml語句實現dao層介面 listselectbysome param record personexample example 時候,我寫的xml中有這麼一句 if test record.id nul...

乙個int型別引發的bug

今天我在專案開發中,遭遇了乙個莫名其妙的問題,概括加抽象後形成如下問題 在使用mybatis的xml語句實現dao層介面 listselectbysome param record personexample example 時候,我寫的xml中有這麼一句 if test record.id nul...

從乙個程式的Bug解析C語言的型別轉換

從乙個程式的bug解析c語言的型別轉換 先看下面一段程式,這段程式摘自 c 專家程式設計 include int array define total elements sizeof array sizeof array 0 int main void 如果是有這樣一段程式的話,你永遠無法知道x的值...