如果我在循环内声明 'val' 变量,那么代码不会显示所需的输出,但是当我将它放在循环外时它工作正常。原因?

If I declare the 'val' variable inside the loop then the code is not showing the desired output but when i put it outside loop it works fine. Reason?

在下面的代码中,如果我在循环内声明变量 val,那么代码不会显示所需的输出,但是当我将它放在循环外时它工作正常。

可能是什么原因?

#include <iostream>
using namespace std;

int main(){

    int n ;
    cin>>n ;
    int row=1;
    char val = 'A';
    
    while(row<= n){
        int col=1;
        
        while(col<=n){
            cout<< val ;
            val = val+1;
            col=col+1;

        }
        cout<<endl;
        row=row+1 ;

    }
}

在 while 循环的每次迭代中都会重新创建您的变量。 变量的 scope 在循环内是 local,因此每当另一个迭代开始时,它都会创建一个新副本。

在您的例子中,如果您将变量 val 放入循环中,它将每次都以 A 作为其值重新创建。但是在 global 范围内它只被初始化一次从而实现你的目的。

你可以参考这个Scope of variables来更好地理解。