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

关于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日