首页 > 解决方案 > for 循环指令的工作方式与 C++ 中的理论不同

问题描述

for在 C++ 中使用循环时遇到问题。它没有像我想象的那样工作。我被困从下面的短代码开始:

#include <iostream>
#include<vector>
using namespace std;
int main() {
   vector<int> v;  //v.size() is 0 now
   for(int i=1;i<(v.size()-1);i+=2)
   {
      cout<<"i think this line will not be show!";
   }
   return 0;
}

此代码打印在控制台上:

i think this line will not be show!

在上面的代码中。在for循环语句中,变量i由 1 初始化,v.size()-1将是 -1,因为v.size()现在为零。所以,我认为i<(v.size()-1)会是falsefor循环将被忽略,程序转到 return 语句而不在控制台上打印任何字符。但是当我运行它时,我看到了for loop仍然工作和打印线i think this line will not be show!。我真的不明白for在这种情况下循环是如何工作的。谁能给我解释一下!太感谢了。

标签: c++loopsfor-loop

解决方案


v.size()返回 a size_t,这是一个无符号整数类型,这意味着它超出范围时会回绕。所以size_t(0) - 1实际上是一个非常大的数字,因为它不可能是负数。


推荐阅读