我很困惑为什么下面的代码会产生这个输出:
#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/