写点什么

for 循环中声明变量的一个问题回顾

作者:老王同学
  • 2023-02-25
    广东
  • 本文字数:698 字

    阅读完需:约 2 分钟

for 虽然是个非常简单的循环表达式,但对于新手来说,用好它却并不是一件简单的事情。

    以前我曾经犯过一个错误,现在想起来是个很愚蠢的一个问题,但对于当时的我,却是一个很迷惘的事情。

//我在某个地方写了类似于如下的for循环代码vector<int> vecInt;vector<MyType> vecMyType;
for (vector<int>::iterator itInt = vecInt.begin(), vector<MyType>::iterator itMy = vecMyType.begin(); itInt != vecInt.end() && itMy != vecMyType.end(); ++itInt, ++itMy){ //使用itInt,itMy}
复制代码

死活编译不过,老是提示 itMy 未声明,我也是百思不得其解啊。


过了一段时间之后,我看到相关资料的时候,才知道其中原委,原来 for 循环的声明中,只能声明一种类型的变量,而我上面那段代码中,声明了两种类型的 iterator,当然编译不过了。

比如说

for(int i = 0, j = 0, k = 0; i < 10 && j < 10; ++i, ++j, ++k){    cout << "i = " << i << ", j = " << j << ", k = " << k << endl;}
复制代码

这样一段代码,不会有什么问题。


但如果换成

for(int i = 0, j = 0, short k = 0; i < 10 && j < 10; ++i, ++j, ++k){    cout << "i = " << i << ", j = " << j << ", k = " << k << endl;}
复制代码

就行不通了。当然,for 循环表达式中声明的变量作用域,也仅限于 for 循环内部,这是另外一个话题了。


所以,对于 C++的初学者来说,最重要的不是写了多少代码,而是在遇到问题的时候,多看书,尤其是多看经典的 C++著作,同时,一定要看 C++标准。市面上很多书都在无聊的讨论很多 C++中的未定义行为,其实在标准中,都已经讲的很清楚,未定义行为,就是怎么做都行,看编译器实现,所以嘞,就没必要扯来扯去了嘛。

发布于: 刚刚阅读数: 7
用户头像

老王同学

关注

还未添加个人签名 2020-04-30 加入

还未添加个人简介

评论

发布
暂无评论
for循环中声明变量的一个问题回顾_c++_老王同学_InfoQ写作社区