universe_R 2021-12-14 19:41 采纳率: 100%
浏览 21
已结题

关于c++中-1<vector size的比较问题


int main() {
    vector<int> cost_sam(3, -1);
    cost_sam[0] = 10;
    cost_sam[1] = 15;
    cost_sam[2] = 20;

    cout <<((-1) < (cost_sam.size())) << endl;
        cout<<(-1<3<<endl;
    
    return 0;

}

为什么第一cout输出0,而第二个cout输出1,cost_sam.size()应该为3才对啊

  • 写回答

2条回答 默认 最新

  • _GX_ 2021-12-14 19:58
    关注

    因为std::vector::size()返回的是无符号整型,有符号整型与无符号整型比较大小时,有符号整型会被转换为无符号整型,因此-1相当于0xFFFFFFFF
    要和-1比较,那么你得写成

    std::cout << (-1 < static_cast<int>(cost_same.size())) << std::endl;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月22日
  • 已采纳回答 12月14日
  • 创建了问题 12月14日

悬赏问题

  • ¥100 关于python拓展屏使用pyautogui.screenshot无法截图的问题
  • ¥15 有偿求答 无导出权限怎么快速导出企业微信微文档
  • ¥15 求解答,怎么数码管中这么加入闹钟或者传感器,这应该怎么加入相应的代码
  • ¥15 scottplot5
  • ¥30 想问问这个建模怎么编程没有思路
  • ¥15 关于imageENview(ImageEN)中新建图层并根据鼠标位置添加图标
  • ¥100 用两台电脑局域联网进行MT5的EA参数优化,但是连接不上,日志提示:
  • ¥15 FastAPI报错: AsyncSession不是有效Pydantic类型
  • ¥50 这Mac系统提示虚拟内存不足,怎么解决
  • ¥15 Rs232电路无法收发数据,求帮助