为什么要减去vector :: size并先将其存储到变量中,而不会返回不同的结果?

问题描述 投票:-1回答:1

向量的大小为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;
}

c++ vector size
1个回答
0
投票

arr.size()的返回类型是unsigned整数类型,最常见的是std::size_t。当您从中减去6时,该值会下溢并环绕到该大小可以存储的最大整数,因为该类型不能存储负值。

[将结果存储在变量中时,您还将其转换为int,它是signed类型,并且is能够存储负值。

如果存储保留其类型的值,您将观察到相同的内容:

auto size = arr.size();
© www.soinside.com 2019 - 2024. All rights reserved.