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

标签 c++ vector std division integer-division

<分区>

Possible Duplicate:
int divided by unsigned int causing rollover

您好,我正在做以下事情:

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;

}

我得到以下输出:

 c.col is -13
 v size is 5
858993456

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

 c.col is -13
 v size is 5
-2

这是为什么?

最佳答案

这是 v.size()unsigned 的结果。

参见 int divided by unsigned int causing rollover

关于C++:除以 vector.size() 给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14255671/

相关文章:

c++ - 为什么 std::thread 在其构造函数中等待?

c++ - Opencv DMatch距离超出范围

c++ - 引用 STL vector 类型

c++ - 奇怪的 C++ 编译错误与 valarrays

c++ - 为什么 is_lock_free 是一个成员函数?

c++ - 标记为 `virtual final` 的基类方法是否会引入额外的开销?

c++ - 将 GUI 工具包链接到 C++ 输入

r - 计算连续值之间的差异或与 R 中向量中最新的非 NA 值的差异

javascript - 如何只匹配那些前面有偶数个 `%` 的数字?

c++ - 为什么在这种情况下使用 vector<>.push_back() 时不使用动态内存?