当前位置:  开发笔记 > 编程语言 > 正文

当一个是size_t类型而另一个是<0时,为什么mod操作返回0?

如何解决《当一个是size_t类型而另一个是<0时,为什么mod操作返回0?》经验,为你挑选了1个好方法。

有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,正如您希望的那样.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有