首页 > 编程语言 > 详细

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

时间:2015-09-13 13:20:30      阅读:470      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!