#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v = {1,2,3};
int maxi = INT_MIN;
if(v.size() > maxi)
cout<<"YES"<<"\n";
else
cout<<"NO"<<"\n";
return 0;
}
当我在 C++ 14 ide 上运行此代码时,我得到的答案为“否”,这是意料之外的。 这种情况发生了什么?
正如评论中指出的,您正在比较有符号数字和无符号数字,这可能会导致一些意外的行为,只需转换为有符号整数,如下所示:
if((int)v.size() > maxi)
INT_MIN
是 signed 类型,因此您在比较中遇到了签名/未签名的提升。
我建议您在编译时添加适当的警告标志,以提醒您注意此问题,这样您就可以避免它。