Reihenfolge bei der Ausgabe mit cout



  • Wieso ist folgende Ausgabe nicht eindeutig?
    Wieso geben manche Compiler 3, 2, 1 aus?

    So wie ich den C++Standard verstehe, dürfte dies eigentlich nicht sein. Der Operator << ist linksassoziativ und die Auswertung der Funktionsaufrufe sollte daher auch klar definiert von links nach rechts geschehen. Scheint aber nicht so zu sein (ähnlich wie bei Funktionsargumenten)!

    #include <iostream> 
    
    int te()
    {
    	static int k = 0;
    	return ++k;
    }
    
    int main()
    {	
      std::cout << "  " << te() << ", " << te() << ", " << te() << std::endl; 
      return 0;
    }
    



Log in to reply