Kleines C-Programm schreiben - Hilfe



  • Moin zusammen,

    könnte mal bitte jmd kurz folgendes Programm durch seinen Compiler jagen und mir sagen, was er ausgibt? 🙂
    Bei mir kommt immer eine Art "externer Link-Fehler" oder so etwas ähnliches. Das Programm müsste normal stimmen, habe es aus einem Buch abgetippt...

    #include <stdio.h>
    
    int main ( ) {
        int i,j;
    
        for (i=0;i<3;i++) {
             j=i/2;
             while (j--)
                    printf(”i=%d j=%d\n”,i,j);
             do
                    printf(”i=%d j=%d\n”,i,j);
             while (++j<i);
        }
        printf(”i=%d j=%d\n”,i,j);
        return 0;
    }
    

    Danke 👍

    LG



  • D:\0Neue Programme\Hilfe\main.c||In function 'main':|
    D:\0Neue Programme\Hilfe\main.c|8|error: stray '#' in program|
    D:\0Neue Programme\Hilfe\main.c|8|error: expected ')' before ';' token|
    D:\0Neue Programme\Hilfe\main.c|8|error: stray '#' in program|
    D:\0Neue Programme\Hilfe\main.c|9|error: stray '\224' in program|
    D:\0Neue Programme\Hilfe\main.c|9|error: expected expression before '%' token|
    D:\0Neue Programme\Hilfe\main.c|9|error: stray '\' in program|
    D:\0Neue Programme\Hilfe\main.c|9|error: stray '\224' in program|
    D:\0Neue Programme\Hilfe\main.c|11|error: stray '\224' in program|
    D:\0Neue Programme\Hilfe\main.c|11|error: expected expression before '%' token|
    D:\0Neue Programme\Hilfe\main.c|11|error: stray '\' in program|
    D:\0Neue Programme\Hilfe\main.c|11|error: stray '\224' in program|
    D:\0Neue Programme\Hilfe\main.c|14|error: stray '\224' in program|
    D:\0Neue Programme\Hilfe\main.c|14|error: expected expression before '%' token|
    D:\0Neue Programme\Hilfe\main.c|14|error: stray '\' in program|
    D:\0Neue Programme\Hilfe\main.c|14|error: stray '\224' in program|
    ||=== Build finished: 15 errors, 0 warnings ===|

    Ps lade die mal http://www.codeblocks.org/ runter das ist nen kostenloser compiler



  • Wenn ich die Eingabefehler richtig gefixt habe (” und ” -> "; − -> -), kommt dabei

    i=0 j=-1
    i=1 j=-1
    i=1 j=0
    i=2 j=0
    i=2 j=-1
    i=2 j=0
    i=2 j=1
    i=3 j=2
    

    raus.

    Mal wild geraten: Hast du den Code als neue Quellcodedatei einem bestehenden Projekt hinzugefügt? In dem Fall hättest du in zwei verschiedenen Dateien des Projektes eine main definiert, und der Linker wüsste am Ende nicht, welche er benutzen soll.



  • nein neues Projekt er lässt sich einfach nicht Compilern

    es ligt einfach am zeichen satz den mein compiler nicht kennt

    ["] ist nun mal nicht [”]



  • jepp ganz genau...habe ganz normal, wie immer, ein neues Projekt angelegt...

    danke euch beiden 👍

    // sry für die Tippfehler bzw. falschen Zeichen, da waren die Hände mal wieder schneller als der Kopf 😞



  • nochmal kurz zu dem Programm...

    die ersten 3 Ausgaben sind mir klar, aber dann:

    i=2, dann berechnet er j=1 (i/2)...

    dann geht er in die while-schleife, da j=1 und gibt, nachdem er j dekrementiert hat i=2 und j=0 aus.

    Aber warum geht er jetzt laut Ausgabe (i=2 und j=-1) nochmals in die while-Schleife? 😕
    Ich dachte, sobald der Ausdruck der while-Schleife 0 ist wird diese nicht mehr ausgeführt und j ist ja 0, also dürfte er doch gar nicht mehr in diese Schleife gehn?!



  • Tut er nicht. Er geht in die do-while-Schleife direkt darunter.



  • wie kommt er aber dann auf j == -1 ?



  • Im Kopf der while-Schleife darüber wird j postdekrementiert. Wenn

    while(j--)
    

    mit j == 0 erreicht wird, wird die Schleife abgebrochen und j um 1 dekrementiert. Danach ist j == -1.



  • seldon schrieb:

    Im Kopf der while-Schleife darüber wird j postdekrementiert. Wenn

    while(j--)
    

    mit j == 0 erreicht wird, wird die Schleife abgebrochen und j um 1 dekrementiert. Danach ist j == -1.

    Ahh jetzt 😃 Danke dir 👍

    Ich bin davon ausgegangen, dass wenn die Schleife abgebrochen wird er auch nicht dekrementiert... 🙄


Anmelden zum Antworten