Guten Morgen, hat jemand ne Idee warum ich das Programm nicht läuft? Ich lasse mir im AVR Studio die Werte der Variablen n anzeigen, aber da tut sich nix. #include <avr/io.h> int n; int main(void) { while (1) { n=n++; n=n+1; n+=1; } }
vermutlich wird alles wegoptimiert weil es ja auch auch kein sinn macht. Das ist besonders ungünstig, der compiler sollte da schon warnen. n=n++;
was auch noch ein Problem sein könnte, du initialisierst n nicht mit 0. Normal mach das der compiler, aber nicht alle. verschs mal mit #include <avr/io.h> int n = 0; int main(void) ...
Michael Frei schrieb: > Normal mach das der compiler nein macht er nicht, nur bei static muss er es machen.
n wird auf 0 initialisiert wie jede globale Variable. Wenn n zusätzlich volatile deklariert wird, kann der Compiler die Inkrementierung nicht wegoptimieren. Also
1 | volatile int n; |
schreiben. Falls bei n=n++ keine Warnung kommt, solltest Du diese einschalten (-Wall). Die ist (wie Warnings allgemein) dann bitte auch nicht zu ignorieren. Und wenn Du die Warnung dann mitbekommen hast, nach „sequence points“ googeln. Da wird im erstbesten Beispiel ziemlich sicher genau dieser Fall behandelt.
Hc Zimmerer schrieb: > Alsovolatile int n;schreiben. Du hast Recht, es funktioniert, mal schauen ob das mein ursprüngliches Problem löst. Erstmal Vielen Dank
iug<sdf schrieb: > mal schauen ob das mein ursprüngliches > Problem löst Vielleicht beschreibst Du dann Dein ursprüngliches Problem. Ich kann mir nämlich keinen Fall denken, wo etwas in der Art von
1 | n=n++; |
Teil der Lösung eines Problems ist. Hattest Du vorher ein Problem, hast Du damit zwei.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.