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

时间:2023-03-08 17:35:29
VS2013 warning C4018 "<” 有符号/无符号不匹配

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

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 的范围