为什么(-1)%vector::size()总是返回0
why (-1) % vector::size() always returns 0
我用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
相关文章:
- 为什么(-1)%vector::size()总是返回0
- 返回 str vs. str.substr(0,str.size()) 在 leetcode 中给了我不同的输出
- 如何从类成员函数返回指针,例如 size_t * class :: function(); 并使用类析构函数 ~size
- 如何在没有参数的情况下实现返回双向链表大小的函数?int size() const.
- 成员功能在面向对象的框架中返回std :: vector.size()的效率
- vector.size() 返回 1,即使其中有超过 1 个元素
- vector::size() 如何在常量时间内返回向量的大小
- String.length() 或 String.size() 返回带有 "x" (\x5) 的数字
- std::queue::size() 可以在 size() == 0 的 pop() 之后返回一个巨大的数字
- 如果 vec.size() == 0,vec.data() 返回什么
- 为什么QVector::size返回int ?< / h1 >
- QSqlQuery size() 总是返回 -1
- Vector size()返回看似随机的大整数
- 结构体的vector.size()将返回什么
- C++错误:"size"声明为返回函数的函数
- std::match_results::size返回什么?
- Linux下的OpenCV:无法获取Mat size (cv:: size),只返回MSize
- QVector size()返回大小为0
- 当size为0时,STRNCMP的返回值是多少?
- new(size, value) Type[0]返回的指针是否合法,是否可以用来构建数组?