关于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才对啊

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

std::cout << (-1 < static_cast<int>(cost_same.size())) << std::endl;

cout<<(-1<3<<endl;这是啥语句啊