次のwhileループは終了しません。これは、変数x
がwhileループ内で再宣言されているためです。しかし、2回目以降の反復で、ステートメントx<10
とy=x
は、次のステートメントのブロックスコープで定義されたx
ではなく、外側のスコープで定義されたxを考慮する理由を理解できません。 これは、最初の反復が終了すると、ブロックスコープで定義されたx
が破棄され、ループが新しく実行されるためですか?C++ forループで再宣言された変数のスコープが混乱しています
#include<iostream>
int main() {
int x = 0, y;
while(x <10){
y = x;
std::cout<<"y is :"<< y <<std::endl;
int x = y + 1;
std::cout<<"x is :"<< x <<std::endl;
}
std::cout<<"While loop is over"<<std::endl;
}