为什么vector.size() - 1给出了垃圾值?

JVJ*_*lus -3 c++ debugging vector issue-tracking

我曾尝试运行此代码

// vector::size
#include <iostream>
#include <vector>

int main ()
{
   std::vector<int> myints;
   std::cout << "size: " << myints.size() << '\n';
   std::cout << "size: " << myints.size()-1 << '\n';

 return 0; 
}
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是输出来了

0

垃圾价值

它应该是

0

-1

这是:代码

Bat*_*eba 6

myints.size()是一种无符号类型:正式a std::vector<int>::size_type.从无1符号类型中减去值为0将导致环绕效果(在您的情况下)

std::numeric_limits<std::vector<int>::size_type>::max()
Run Code Online (Sandbox Code Playgroud)

不会打印"垃圾值":但是上面的数字,比一个2的大功率小一个.