注册 登录
编程论坛 C++教室

为什么j要再定义一次?求解~~

木瓜君 发布于 2009-12-17 21:30, 516 次点击
程序代码:
#include <iostream.h>
void main()
{
    int a[3][3];
    for ( int i = 0, temp = 1; i <= 2; i++)
    {
           for ( int j = 0; j <= 2; j++,temp++)
           {
               a[i][j] = temp;
               cout << a[i][j] << "  " ;
           }
           cout << endl;
    }
    cout << " After transform :" << endl;
    for ( j = 0; j <= 2; j++)       //这里不再次定义j时,会出错~~
    {
        for ( i =0 ; i <= 2; i++)
        {
            cout << a[i][j] <<"  ";
        }
        cout << endl;
    }

}

不解捏~~~哪位大大解答下?
6 回复
#2
木瓜君2009-12-17 21:51
upupupup~~
自顶~~
#3
英英2009-12-17 22:44
我觉得是因为j第一次定义是在第一个for语句内,它的作用域仅局限于for语句的一对大括号内,出了这个范围就必须重新定义。建议你查一下C语言的书,上面有关于变量的作用域的内容。
#4
shiyuehai2009-12-17 23:45
作用域的问题了,你的j是定义在第一个for里面的,他仅在第一个for这个块里面。当循环完了之后j的寿命也没了,我的理解
#5
木瓜君2009-12-18 17:08
thx
#6
newCpp2009-12-18 17:17
你可以先去试一下!在一个程序里定义两个相同名称的变量,
试一下运行结果是什么!
然后你将一个变量用{ }
括起来在运行一次看看运行结果
试过之后你就明白了!
#7
pangding2009-12-20 09:39
就是作用域的问题。
觉得可以这么写的,是受老旧的 VC 6.0 的影响。它当时实现的很不“标准”~
1