#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5, 6, 7};
int i = -4;
cout << i << endl;
cout << v.size() << endl;
cout << i % v.size() << endl;
cout << -4 % 7 << endl;
}
上面的代码打印:
-4
7
5
-4
有人可以解释一下原因吗i % v.size()
prints 5
代替-4
?我猜这与vector.size()
,但不确定根本原因是什么。提前致谢。
的操作数为%
经历常见的算术转换在执行划分之前将它们变成共同类型。如果操作数是int
and size_t
,那么int
被转换为size_t
.
If size_t
那么是32位的-4
会成为4294967292
然后表达式的结果是4294957292 % 7
这实际上是0
.
If size_t
那么是64位的-4
将变为 18,446,744,073,709,551,612,其结果% 7
is 5
你看到了。
所以实际上我们可以从这个输出中看出您的系统有 64 位 size_t。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)