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

    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++中的未定义行为,其实在标准中,都已经讲的很清楚,未定义行为,就是怎么做都行,看编译器实现,所以嘞,就没必要扯来扯去了嘛。




参与评论 您还未登录,请先 登录 后发表或查看评论
相关推荐

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

王旺旺旺

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值