Problem bei Array of structs



  • Hallo,

    ich hab ein kleines Problem beim Anlegen eines Array von structs.

    struct produkt
    {
    	int preis;
    	int nummer;
    };
    void init()
    {
    produkt abc[10];
    for(int i=0; i++; 1<10)
    {
    abc[i]={10, i};
    }
    }
    
    int main()
    {
    init();
    }
    

    Und der Compiler (der aus Visual Studio 2010) sagt dann bei der for-Schleife "Error: Es wurde ein Ausdruck erwartet". Und da mir nciht bewusst ist, bzw auch durch Internetrechere nicht bewusst wird, warum er das nciht frisst, wäre es schön wenn mir jemand helfen kann!

    Schönen Gruß



  • Eine for-schleife sieht so aus:
    for(Initialisierung; Bedingung; Reinitialisierung)
    Du hast bedingung und Reinitialisierung vertauscht.

    for(int i = 0; i<10; ++i)
    

    gruß
    syntax



  • Syntax_error schrieb:

    Eine for-schleife sieht so aus:
    for(Initialisierung; Bedingung; Reinitialisierung)
    Du hast bedingung und Reinitialisierung vertauscht.

    1. Reinitialisierung, sowas gibt es nicht. Was du meinst, ist eine Zuweisung.
    2. Der dritte Ausdruck einer for-Schleife muss keine Zuweisung sein. Du kannst hier auch irgendeinen anderen Ausdruck nutzen, z.B. ein push_back .



  • for(int i=0; i++; 1<10)
    

    unabhängig von der Reihenfolge wird "1<10" zu anderen Problemen führen.



  • out schrieb:

    Syntax_error schrieb:

    Eine for-schleife sieht so aus:
    for(Initialisierung; Bedingung; Reinitialisierung)
    Du hast bedingung und Reinitialisierung vertauscht.

    1. Reinitialisierung, sowas gibt es nicht. Was du meinst, ist eine Zuweisung.
    2. Der dritte Ausdruck einer for-Schleife muss keine Zuweisung sein. Du kannst hier auch irgendeinen anderen Ausdruck nutzen, z.B. ein push_back .

    Wenn man es genau nimmt, dann sagt der Standard

    N3337 §6.5.3 / 1

    for ( for-init-statement conditionopt; expressionopt)

    Also:

    for( Statement ; Bedingung ; Ausdruck )
    

    Wo das Statement im ersten Teil auch einfach eine leere Anweisung sein kann. Deswegen ist es nicht optional.



  • Ich Idiot^^

    Wie kann sowas passieren oO

    Danke und Gruß


Anmelden zum Antworten