gpt4 book ai didi

c++ - 为什么负数不以 vector 大小为模给出负数?

转载 作者:行者123 更新时间:2023-12-01 08:51:22 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





C++ size_t modulus operation with negative operand

(1 个回答)


去年关闭。




#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()版画 5而不是 -4 ?我猜它与 vector.size()有关,但不确定潜在的推理是什么。提前致谢。

最佳答案

% 的操作数在执行除法之前,进行通常的算术转换以将它们转换为通用类型。如果操作数是 intsize_t ,然后是 int转换为 size_t .

size_t是 32 位然后 -4会变成4294967292然后表达式的结果是 4294957292 % 7这实际上是 0 .

size_t是 64 位然后 -4将变成 18,446,744,073,709,551,612 和这个 % 7 的结果是 5你看到的。

所以实际上我们可以从这个输出中看出你的系统有 64 位 size_t。

关于c++ - 为什么负数不以 vector 大小为模给出负数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62382318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com