我很困惑为什么以下代码会产生此输出:
#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();
is i
被转换为size_t
因为另一边s.size()
is size_t
。并且不像int
, size_t
未签名;也就是说该值被解释为正数。
检查该行的输出:
std::cout << (size_t)-1 << std::endl;
看看 -1 变成了什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)