c++ - 使用 vector 大小时,for 循环出错

标签 c++

这是我编写的示例代码。 我将按如下方式输出,

size 0
Here

为什么即使 myVec.size 的值为零,这段代码也会进入 for 循环

#include <iostream>
#include <vector>
using namespace std;

int main()
{
  vector<int> myVec;
  cout <<" size  " << myVec.size() << endl;
  for (int i=0; i<myVec.size() -1; i++)
  {
   cout << " Here  " << endl;
   break;
  }
  return 0;
}

最佳答案

size() 返回无符号类型。对于无符号类型,0 - 1“下溢”到最大值。由于 i 小于其转换类型的最大可能值,因此进入 for 循环。

关于c++ - 使用 vector 大小时,for 循环出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22868887/

相关文章:

c# - c#如何在asp.net网页中显示C程序错误

c++ - 相互依赖的本地类(或相互递归的 lambda)

c++ - 在按键期间不会不断调用 GLFW 中的 glfwSetKeyCallback()

c++ - 析构函数调用时访问冲突读取位置 0xfeeefe2

c++ - 如何在 C++ OOP 中正确使用类中的函数

c++ - 在 C++ 中让一个类完成工作还是将一个类分成几个子类?

c++ - Google Mock 使用 ON_CALL 返回一个实时元素

c++ - 更改程序中的访问说明符是否会改变程序的行为?

c++ - 在 C++ unordered_map 中调用一个不存在的键的方法

c++ - 如何解决由于参数中的默认构造函数导致的函数重载不明确