size_t 与 int 比较的坑

2022/09/16 杂谈 共 254 字,约 1 分钟
call me JC

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;

文档信息

Search

    Table of Contents