向量的大小为5,然后我想将其减去6。它应该返回-1,但是第一次不将大小存储在变量中的尝试不会返回-1。这是一堆随机数。为什么会这样呢?在我看来,无论是否先将大小存储到变量中,它都完全相同。两者都应返回-1。
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> arr(5);
cout << arr.size() - 6 << endl;
int size = arr.size();
cout << size - 6 << endl;
return 0;
}
arr.size()
的返回类型是unsigned整数类型,最常见的是std::size_t
。当您从中减去6时,该值会下溢并环绕到该大小可以存储的最大整数,因为该类型不能存储负值。
[将结果存储在变量中时,您还将其转换为int
,它是signed类型,并且is能够存储负值。
如果存储保留其类型的值,您将观察到相同的内容:
auto size = arr.size();