关于size()函数的注意点

xiaoxiao2021-02-28  38

size()的返回值是unsigned类型的,所以不能和负数比较大小。请看下面的程序。

#include<iostream> using namespace std; int main() { unsigned x; x=2; if (-1>x) cout<<-1; else cout<<1; }

输出的结果是-1。 由此可见,unsigned类型不能和负数比较大小。

再看下面的程序。

#include<iostream> #include<vector> using namespace std; vector<int> a; int main() { a.push_back(1); int h=-1; cout<<"h="<<h<<' '<<"a.size()="<<a.size()<<'\n'; while (h<=a.size()) { cout<<"已进入循环 "; h++; } }

输出的结果为

h=-1 a.size()=1

然后再看下面的程序

#include<iostream> #include<vector> using namespace std; vector<int> a; int main() { a.push_back(1); int h=-1; cout<<"h="<<h<<' '<<"a.size()="<<a.size()<<'\n'; while (h<=(int)(a.size())) { cout<<"已进入循环 "; h++; } }

把a.size()强制转换为int类型,输出结果为

h=-1 a.size()=1 已进入循环 已进入循环 已进入循环

这说明,size()函数的返回类型为unsigned。

总结

使用vector或queue等时,尤其需要注意用size()函数时,不能和负数比较大小,不然会发生一些很恶心的错误。这是一个来自调试了一下午程序的人的忠告。

转载请注明原文地址: https://www.6miu.com/read-2629816.html

最新回复(0)