为什么(-1)%vector::size()总是返回0

why (-1) % vector::size() always returns 0

本文关键字:返回 size %vector 为什么      更新时间:2023-10-16

我用C++编写了这段代码。

vector<int> array = {1,2,3,4};
int i = (-1) % array.size();

值i总是0,但我想得到-1。当我用强制转换将代码更改为这个时。

vector<int> array = {1,2,3,4};
int i = (-1) % (int)array.size();

那么我有-1。

我在网上搜索了vector::size((函数的一些属性。然而,我不明白。

有人能回答为什么会发生这种情况吗。非常感谢。


感谢lgor的评论。

这肯定是因为(-1) % array.size()将int-1转换为size_t。从而根据CCD_ 5的确切类型而变为CCD_。取其模4得到3

不知道你为什么得到0。不管您写了什么,在您的代码中,数组的大小可能是3——在这种情况下,结果将是0

编辑:请参阅算术转换规则,了解为什么在size_t而不是其他类型中进行计算:https://en.cppreference.com/w/cpp/language/operator_arithmetic