码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 当定义变量的逗号与for语句条件初始化的逗号相遇时

时间:2015-09-13 13:23:37      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

程序如下:

#include <iostream>

using std::cout;
using std::endl;

int main(int argc, char** argv)
{
    int i = 0, j = 2;

    for (int z = 2, i = j;z == 2;z++)
      cout << "i: " << i << endl;
    cout << "i: " << i << endl;
}

输出

i: 2
i: 0

分析:

在for语句第一个分号前面是初始化语句,多条初始化语句用都逗号隔开,在定义同个类型的多个变量时也用逗号隔开不同的变量,那么在两种情况重叠时,结果是什么样的呢。

若按上面格式

for (int z = 2, i = j;z == 2;z++)

此时有两种猜想:

1、i为新申请的,只在for语句中有效的,语句块局部变量,用main函数中的j变量初始化它,此时它将屏蔽main函数中的i变量。

2、i为main函数中i,此处将main函数中变量j的值赋给i,main函数中的i值改变了。


这两种猜想都有根据,但是根据程序的输出,此时i被认为是一个新申请的语句块局部变量。

它屏蔽了main函数中的i,此时main函数中的i,其值不变。等for语句运行结束后,main函数中的i,还是之前的值。

C++ 当定义变量的逗号与for语句条件初始化的逗号相遇时

标签:

原文地址:http://my.oschina.net/u/2313065/blog/505476

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!