C++:由vector.size()除法给出了奇怪的结果

Aly*_*Aly 2 c++ vector std division integer-division

可能重复:
int除以unsigned int导致翻转

嗨,我正在做以下事情:

struct coord{
    int col;

};


int main(int argc, char* argv[]) {

    coord c;
    c.col = 0; 

    std::vector<coord> v;

    for(int i = 0; i < 5; i++){
        v.push_back(coord());
    }

    c.col += -13;


    cout << " c.col is " << c.col << endl;
    cout << " v size is " << v.size() << endl;

    c.col /= v.size();


    cout << c.col << endl;

}
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

 c.col is -13
 v size is 5
858993456
Run Code Online (Sandbox Code Playgroud)

但是,如果我将分割线更改为c.col /= ((int)v.size());I,则获得预期的输出:

 c.col is -13
 v size is 5
-2
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

NPE*_*NPE 5

这是一个后果v.size()unsigned.

请参阅int除以unsigned int导致翻转