for() Initialisierung mit verschiedenen Datentypen möglich?



  • for(size_t z = 0, k = vek.size(); z < k; ++z) { foo.bar }
    

    Das Problem ist, wie ich heute fest gestellt habe, man kann im Initialisierungsteil nur einen Datentyp verwenden sonst meckert der Compiler.
    Wenn ich 2 (oder mehr) Variablen habe von unterschiedlichem Datentyp dann müssten die ja theoretischerweise durch ; (Strichpunkt) getrennt werden, was aber nicht geht weil dann der Bereich BEDINGUNG beginnt.
    Geht es doch? oder ist das nur im Rumpf möglich?

    for(size_t z = 0, k = vek.size(); z < k; ++z) {
    int a = 0; // In Init nicht möglich
    foo.bar
    }
    

    Ist nur Interesse, mir ist das nie aufgefallen vorher.



  • Absenden gedrückt .....

    Im Rumpf ist ja nicht möglich weil bei jedem Schleifendurchlauf neu initialisiert werden würde. Ist es also NUR global möglich?
    Wie macht man es richtig?!.

    Danke



  • Wie wär's mit nem Komma?



  • Kann sein das es nicht akzeptiert wird ... was hält dich davon ab bsw folgendes zu machen?

    #include <iostream>
    
    int main()
    {
        unsigned short a = 0;
        for (unsigned int n = 0; (n < 100  && a < 1000); ++n, a += 10)
            std::cout << a << n << std::endl;
    }
    

    Aber normal sollte ein Zähler reichen, da du mit einer Multiplikation oder Division dann auch auf den 2. Zähler kommen solltest ...



  • Fehler: expected unqualified-id before »in

    Dann kommt dieser Fehler. Ich denke es ist so wie bei einer Variablendeklaration/Definition.

    int a = 0, b = 1;
    Hier kann ich ja auch nicht schreiben.

    int a = 0, float c = 2;



  • unsigned short a = 0;
        for (unsigned int n = 0; (n < 100  && a < 1000); ++n, a += 10)
            std::cout << a << n << std::endl;
    

    a ist hier aber dann global.



  • Geht nicht.



  • Dann brauch ich nicht weiter suchen.

    Vielen Dank.



  • {
      unsigned short a = 0;
      for (unsigned int n = 0; (n < 100  && a < 1000); ++n, a += 10)
            std::cout << a << n << std::endl;
    }
    

    Das wäre auch recht lokal.



  • Jop ... im meinem Code ist keine Globale-Variable ... nur lokale und dagegen kannst de eig nix sagen 😉 bei ner For-Scheife hast de auch ne lokale Variable ...


Log in to reply