C 中的向量大小异常
在 C 中,向量容器的 size() 方法返回向量中元素的数量。然而,当向量为空时,会出现令人费解的行为,如以下代码片段所示:
#include <vector> #include <iostream> using namespace std; int main() { vector<int> value; cout << value.size() << endl; // Output: 0 cout << value.size() - 1 << endl; // Output: 18446744073709551615 }
为什么第二个输出不是 -1?
第一个 cout 语句正确打印 0,表明向量为空。然而,第二个语句令人惊讶地输出了一个非常大的正数,而不是预期的 -1。发生这种情况是因为 vector::size() 返回 size_t 类型的无符号整数。顾名思义,无符号整数不能表示负数。
因此,当将 size_t 值从自身中减去时,它实际上会绕回该类型的最大可表示数字。在这种情况下,size_t 通常是一个 64 位整数,因此它可以容纳的最大值是 18446744073709551615。该值是作为第二个 cout 语句的输出打印的值。
期间发生的情况第二次计算?
以下计算顺序解释了第二个 cout 背后的行为:
以上是为什么 `vector.size() - 1` 在 C 中不返回 -1 ?的详细内容。更多信息请关注PHP中文网其他相关文章!