size_t 与 int 比较的坑
int a = -1;
size_t b = 9;
cout << (a<b) << endl;
这个输出是1吗?-1不就是应该比9小的吗,但实际结果却是0!!!
这是因为这里int类型的a它是负数,size_t 是无符号的,则int将被转换为size_t,因此其负值将变为一个很大的正值。然后将这个新的正值与size_t值进行比较。
可以把size_t转换为int型:
int a = -1;
size_t b = 9;
cout << (a<int(b)) << endl;
文档信息
- 本文作者:Yang Jucai
- 本文链接:https://yangjucai.github.io//2022/09/16/size_t-%E4%B8%8E-int%E6%AF%94%E8%BE%83%E5%A4%A7%E5%B0%8F%E7%9A%84%E5%9D%91/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)