代码如下:
vector vec = {};
int i = vec.size() - 1;
cout << i << endl;
cout << vec.size() - 1;
得到的结果上面是-1,下面却是4294967295
请问这是为什么,我的猜想是因为vec.size()是一个无符号型整型
但是我不知道应该如何验证,我用的是VS2017,请问应该怎么查看
这样我下次碰到了可以自己看下
你说的没错。
-1 对应 0xFFFFFFFF,无符号就是 2的32次方-1,也就是4294967295
你的 vector 容器里没有任何值,所以长度是0,再减去一之后就是-1 。而你又说了,vec.size()返回无符号整形,所以不会出现-1(-1是有一个负号的)
所以程序会出现溢出的错误,应该是返回 unsigned int 的最大值,就是 4294967295
而int 是默认有符号的
不懂再问,希望采纳一下,谢谢!
vector.size 返回值就是 size_t
而size_t定义就是 typedef unsigned int size_t