c++ - 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)
会是false
,for
循环将被忽略,程序转到 return 语句而不在控制台上打印任何字符。但是当我运行它时,我看到了for loop
仍然工作和打印线i think this line will not be show!
。我真的不明白for
在这种情况下循环是如何工作的。谁能给我解释一下!太感谢了。
解决方案
v.size()
返回 a size_t
,这是一个无符号整数类型,这意味着它超出范围时会回绕。所以size_t(0) - 1
实际上是一个非常大的数字,因为它不可能是负数。
推荐阅读
- sqlkata - SqlKata 在 MySql 中的异步多插入
- python-3.x - 无法使用python在jupyter中上传CSV文件
- reactjs - 将 Google OAuth 与 React-Django 应用程序一起使用
- c# - 如何使用 VB.net 或 C# 在 Outlook 的阅读窗格中读出接收者和发送者
- google-app-engine - AppEngine 上的限制请求
- flutter - 颤振水印没有响应
- c# - 如何将 JSON 放入数组中?
- octave - octave forge 函数参考中@的含义
- ios - React Native 无法使用 react-native-fbsdk 读取属性“logInWithPermissions”
- node.js - 如何使用 apache 部署 nextjs?收到 404 错误