1

次の while ループは終了しません。これは、変数xが while ループ内で再宣言されているためです。しかし、2回目以降の反復で、次のステートメントのブロックスコープで定義されたxではなく、外側のスコープで定義されたxx<10を考慮する理由がわかりません。これは、最初の反復が終了すると、ブロック スコープで定義された が破棄され、ループが新たに実行され始めるためですか?y=xxx

#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;
}
4

2 に答える 2

2

はい、あなたはそれを正しく理解しています。なので比較するたびにwhileアウターを使っていxます。

while (x < 10) {
    y = x; //Here the x is the outer one. The inner one does not exist yet.
    std::cout << "y is :" << y << std::endl;  
    int x = y + 1; // From here, x will refer to the inner one.
    std::cout << "x is :" << x << std::endl;  
    // inner x is destroyed.
}
于 2016-06-21T05:42:18.517 に答える