weixin_38252896
二十五岁的岛歌
2019-08-04 16:41
采纳率: 100%
浏览 1.3k

请问vector<int> vec大小的问题?

代码如下:
vector vec = {};

int i = vec.size() - 1;

cout << i << endl;

cout << vec.size() - 1;

得到的结果上面是-1,下面却是4294967295

请问这是为什么,我的猜想是因为vec.size()是一个无符号型整型

但是我不知道应该如何验证,我用的是VS2017,请问应该怎么查看

这样我下次碰到了可以自己看下

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • caozhy
    已采纳

    你说的没错。
    -1 对应 0xFFFFFFFF,无符号就是 2的32次方-1,也就是4294967295

    点赞 评论
  • weixin_42375906
    Rotch 2019-08-06 12:16

    你的 vector 容器里没有任何值,所以长度是0,再减去一之后就是-1 。而你又说了,vec.size()返回无符号整形,所以不会出现-1(-1是有一个负号的)
    所以程序会出现溢出的错误,应该是返回 unsigned int 的最大值,就是 4294967295
    而int 是默认有符号的
    不懂再问,希望采纳一下,谢谢!

    点赞 评论
  • qq981091829
    有点贪玩 2019-08-09 19:16

    vector.size 返回值就是 size_t
    而size_t定义就是 typedef unsigned int size_t

    点赞 评论

相关推荐