簡體   English   中英

如何在C ++中用-2147483648初始化向量

[英]How to initialize a vector with -2147483648 in C++

我初始化帶有值-2147483648的向量時發現了問題

vector<int> vec1({-2147483648});       // invalid, error C2440
vector<int> vec2({0, -2147483648});    // invalid, error C2398
int a = -2147483648;
vector<int> vec3({t});                 // valid
vector<int> vec4({0, t});              // valid
vector<int> vec5(1, -2147483648);      // valid

當我使用VS2013時出現問題。 有人知道為什么嗎?

-2147483648是應用於整數文字2147483648的一元求反運算符。 后者不適合int (假設它是32位),這意味着-2147483648實際上是unsigned類型的表達式。

現在,可以將unsigned隱式轉換為int (當值無法表示時,結果從技術上講是實現定義的,但通常並不令人驚訝)。 但是,這是一個縮小的轉換,與大括號初始化一起使用時是禁止的。

無需嘗試將值寫為文字,只需使用<limits.h>標頭中的INT_MIN<limits>標頭中的std::numeric_limits<int>::min()INT_MIN是您要表達一個int的最小值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM