我在我的 c 文件中声明了
size_t file_size;
变量,稍后将 -1
分配给它,然后当我这样做时
if(file_size < 0) {
// do something
} else {
printf("C is confusing\n");
}
output: C is confusing
但是如果我将条件设置为
if(file_size == -1) {
printf("C is easy\n");
} else {
// do something
}
output: C is easy
有人可以解释一下为什么这种情况发生的可能性很小吗?预先感谢!
size_t
无符号这一事实有关,即它只能表示非负值。
第一种情况:
既然是
unsigned
,就永远不可能是 < 0
。
第二种情况:
当你与
-1
进行比较时,-1
实际上被转换为无符号值,因此相等是可行的。
如果您想正确表示负值,请使用
ssize_t
而不是 size_t
。