gpt4 book ai didi

c++ - 为什么 C++ 模运算符对 -1 % str.size() 返回 0?

转载 作者:行者123 更新时间:2023-12-01 14:15:02 24 4
gpt4 key购买 nike

我很困惑为什么下面的代码会产生这个输出:

#include <iostream>
#include <string>

using namespace std;

int main()
{
int i = -1;
string s = "abc";
int j = s.size();
int x = 1 % 3;
int y = i % j;
int z = i % s.size();
cout << s.size() << endl; // 3
cout << x << endl; // 1
cout << y << endl; // -1
cout << z << endl; // 0
}

为什么 z = 0?跟选角有关系吗?

最佳答案

这里真正发生了什么:

int z = i % s.size();

i被转换成size_t,因为另一边s.size()size_t。与 int 不同,size_t 是无符号的;也就是说,该值被解释为正数。

检查这一行的输出:

std::cout << (size_t)-1 << std::endl;

看看 -1 变成了什么。

关于c++ - 为什么 C++ 模运算符对 -1 % str.size() 返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61299317/

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