问题描述
请看一下这个简单的程序:
Please take a look at this simple program:
尽管 -1 明显小于 0,但它输出更大"这一事实让我感到困惑.我知道 size
方法返回无符号值,但比较仍然适用于 -1和 0. 那么发生了什么?谁能解释一下?
I'm confused by the fact that it outputs "Greater" despite it's obvious that -1 is less than 0. I understand that size
method returns unsigned value but comparison is still applied to -1 and 0. So what's going on? can anyone explain this?
推荐答案
因为向量的大小是无符号整数类型.您正在将无符号类型与有符号类型进行比较,并且将二进制补码负有符号整数提升为无符号类型.这对应于一个大的无符号值.
Because the size of a vector is an unsigned integral type. You are comparing an unsigned type with a signed one, and the two's complement negative signed integer is being promoted to unsigned. That corresponds to a large unsigned value.
此代码示例显示了您所看到的相同行为:
This code sample shows the same behaviour that you are seeing:
输出:
假
这篇关于c ++ 矢量大小.为什么 -1 大于零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!