C 踩坑之vector的size比較

2021-10-02 17:03:19 字數 940 閱讀 1835

寫**時遇到vector的size比較,**片擷取修改如下

#include

#include

using

namespace std;

intmain()

;int x = a.

size()

-4;if

(0<= a.

size()

-4)}

上述過程本不應執行,因為照我們理解

a.size()-4=-1

0>-1

if不成立,則不執行

而實際上a.size()-4不是-1

#include

#include

using

namespace std;

intmain()

;int x = a.

size()

-4;if

(0<= a.

size()

-4)}

結果為4294967295

因為a.size()的預設儲存形式不是int,而是unsigned int, int為短整型,即有正負數之分,而a.size()不可能為負數,定義成了無符號短整型。所以當求a.size()-4時,預設資料格式跟隨,發生下溢。即4294967295

要正常求得a.size()-4時,只需加上

int x = a.size() - 4;

強制型別轉換

#include

#include

using

namespace std;

intmain()

;int x = a.

size()

-4;if

(0<= x)

}

可以看到現在過程不執行了

javascript之踩坑記錄

console.log true console.log false 這個坑在於js裡的 和 的區別。1 對於string,number等基礎型別,和 是有區別的 1 不同型別間比較,之比較 轉化成同一型別後的值 看 值 是否相等,如果型別不同,其結果就是不等 2 同型別比較,直接進行 值 比較,兩...

SpringCloud之試探踩坑

一直rpc呼叫都是使用dubbo介面,近來微服務比較火?開始使用springcloud的介面,使用 feignclient的呼叫方式。註冊中心eureka,用於服務註冊和發現。介面呼叫的實質就是restful介面,通過spring內部封裝的httpclient方式請求呼叫。資料傳遞使用json格式,...

C 踩坑 模板類

在學習資料結構c 實現的時候,踩中了c 的乙個坑,如下 template class search int bisearch return 1 private st tar k key 模板類search的成員函式只能定義在.h檔案中,無法在.cpp檔案中定義,定義則會報錯 error lnk201...