VS2013 warning C4018 "<” 有符号/无符号不匹配

1, VS2013 warning C4018 "<” 有符号/无符号不匹配" 警告

出错代码: 

void show(const vector<int>& nums){
 for (int i = 0; i < nums.size(); i++){
  cout << '\t' << nums[i];
 }
 cout << endl;

出错原因:

nums 是一个容器,nums.size() 在容器中被定义成  unsigned int 类型,所以 int i < nums.size() 会出现不同类型的比较问题。

错误解决:

把 i 定义为 unsigned int 类型即可,或者 size_t 类型

size_t 和 int 的区别是什么?

typedef unsigned int size_t

size_t 是无符号的,并且是平台无关的,表示 0-INT_MAX 的范围

 

posted on 2019-02-21 12:56  爱笑的张飞  阅读(2462)  评论(0编辑  收藏  举报

导航