最近遇到的一些坑

2021-09-03 06:59:14 字數 620 閱讀 8810

c++ 邏輯判斷的順序是從左向右的。conditiona&&conditionb 與 conditionb&&conditiona並不一定等價。

舉個例子:

void insertsort(vector&arr, int length)

arr[j + 1] = key;

}}

由於j是int型別,所以在key==5的那次迴圈裡,j最終會變成-1,設j>=0為conditiona arr[j]arr[-1],會報出 out_of_range的異常,解決方案1:按這個例子來編寫ab順序,解決方案b是將j設定為size_t型別。

在非容器操作中,則是另一種情況:

void insertsort(int arr, int length)

arr[j + 1] = key;

}}

假設將j設定為size_t型別,則由於j==0的時候進行j--;返回乙個無符號整形最大值,這種原生陣列越界c++甚至不會給出錯誤提示,算是很隱蔽的bug。

總結:1:在編寫程式的時候,為了避免錯誤,盡可能的使用stl容器

2:進行迴圈操作的時候,明確自己的意圖;如果是以下標為0時作為出口,則盡量使用有符號型別。

最近遇到的一些坑坑

1.未初始化 因為php語言是弱型別語言,不需要宣告變數型別,也不需要初始化值,所以經常對變數直接用,也不初始化。在php中這種做法不會造成致命錯誤,但是不初始化的這種思路會出問題。專案中經常要寫一些指令碼來統計業務的增長。增量的計算是今天基於前一天的增長,如果前一天的總量資料計算失敗,如何計算增量...

python 遇到的一些坑

lst 1,2,4 print lst.iter next 列印出來的是 1 print lst.iter next 列印出來的是 1 呼叫 iter 方法的時候,生成乙個迭代器物件 如上,第二次呼叫,先生成物件,然後返回的是該物件的第乙個值 第二次和第一次列印的是兩個不同的例項的next 方法,但...

安裝Ubuntu遇到的一些坑

用u盤做啟動盤安裝ubuntu其實很容易,網上到處都是教程。但對顯示卡顯示問題,會出現開機黑屏的情況,故將解決方法記錄下來,以做備忘。配置 神船,顯示卡gtx1060。1 開機,按f7選擇u盤啟動。進入grub介面。2 按e編輯開機指令,在quite splash並在後面加上nomodeset,按f...