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

来源:互联网 发布:上交所待遇知乎 编辑:程序博客网 时间:2024/05/19 00:13

    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, shrot k = 0; i < 10 && j < 10; ++i, ++j, ++k){        cout << "i = " << i << ", j = " << j << ", k = " << k << endl;}
就行不通了。当然,for循环表达式中声明的变量作用域,也仅限于for循环内部,这是另外一个话题了。


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