有c ++代码:
string s = "abc"; size_t len = s.length(); cout<<(-1%len)<但如果将size_t更改为int:
string s = "abc"; int len = s.length(); cout<<(-1%len)<为什么会这样,有人可以解释一下,谢谢!
1> Tony Delroy..:底线是你的第一个代码片段,归结为
-1 % size_t{3}
并转换-1
为类型size_t
,如果是32位程序则产生FFFF FFFF,如果是64位则产生FFFF FFFF FFFF FFFF.要么是3的倍数,那么mod运算符返回0
.在另一种情况下,有两个(签名)int
值-1 % 3
返回-1
,正如您希望的那样.