Definition mehrerer Variablen in "for" nicht möglich?



  • Also, bisher dachte ich immer, dass folgendes erlaubt ist:

    for(int l=0, int k=0; 
        l<10, k<10; 
        ++l, ++k)
    {
      ;
    }
    

    Also dass man mehrere Variablen in einer for-Schleife definieren/deklarieren kann.
    Aber zumindestens VS2008 meldet mir folgende Fehler:

    error C2062: 'int'-Typ unerwartet
    error C2065: 'k': nichtdeklarierter Bezeichner
    error C2065: 'k': nichtdeklarierter Bezeichner
    error C2143: Syntaxfehler: Es fehlt ';' vor ')'
    error C2143: Syntaxfehler: Es fehlt ';' vor ')'

    Folgendes geht allerdings wieder:

    int k;
    for(int l=0, k=0; 
        l<10, k<10; 
        ++l, ++k)
    {
      ;
    }
    

    Sprich: man kann nur maximal 1 Variable definieren...

    Weiß evtl. jemand was dazu? 😕



  • Du kannst so viele Variablen definieren, wie du möchtest - solange sie vom selben Typ sind:

    for( int l( 0 ), k( 0 ); l < 10, k < 10; ++l, ++k ) /* ... */
    

    cheers, Swordfish



  • In deinem zweiten Beispiel werden auch zwei Variablen deklariert. Die äußere Deklaration von k wird durch die innere überdeckt. Das erste Feld im for-Schleifenkopf kann eine Anweisung oder eine Deklaration sein. Daraus folgt, dass du soviele Variablen dort deklarieren kannst, wie du willst -- solange sie alle den gleichen Basistyp haben. Verschiedene Basistypen sind nicht möglich.

    Das sollte z.B. gehen, auch wenn es nicht sonderlich sinnvoll ist:

    for (char c = 'A', *p = "Hallo", (*f)(); ...)
    


  • ah, ok, danke 🙂



  • l<10, k<10

    WTF?
    Das "l<10" kannste gleich weglassen, tut ja eh nix.
    "," ist halt nicht gleichbedeutend mit "&&"...



  • f*ck, nichtmal bemerkt *schäm* 🤡

    cheers, Swordfish



  • ganz ehrlich: ich weiß nicht, warum ich das da hingeschrieben habe^^
    meinte natürlich &&


Anmelden zum Antworten