Vernestelte for mit gleicher Variable



  • Dieses Codestückchen gibt für MSVC++ 2010 und g++ 4.4.5 folgendes aus:

    for ( int i=0; i<3; ++i ) {
    	std::cout << i << std::endl;
    	for ( int i=0; i<3; ++i )
    		std::cout << "  " << i << std::endl;
    }
    /* =>
    0
      0
      1
      2
    1
      0
      1
      2
    2
      0
      1
      2
    */
    

    Ist das Standard-konformes Verhalten? Bzw was sagt der Standard dazu, wenn in verschachtelten for-Schleifen identische Variablennamen verwendet werden?


  • Mod

    Ja, das ist standardkonformes, definiertes Verhalten. Du darfst jederzeit Variablennamen aus höheren Skopes benutzen. Die werden dann verdeckt.



  • ... inner scope ueberdeckt outer scope ... macht aber keinen Sinn und nur unnötig schwer wartbaren Code.



  • Ok, danke!


Log in to reply