CodeBlock -std=c99 or -std=gnu99

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: CodeBlock -std=c99 or -std=gnu99

Beitrag von Dirty Oerti » So Nov 06, 2011 5:53 pm

MoonGuy hat geschrieben:Es stimmt zwar, aber man könnte auch einfach den % Operator einführen. Dann ist der ganze Ausdruck leichter zu verstehen.
..zumindest, wenn man die Mathematischen Grundlagen dahinter kennt und weiß, was der Modulo Operator ist bzw was Restklassen sind, sprich wenn man die Grundlagen der Zahlentheorie kennt.
Und davon kann man wirklich nicht ausgehen ;) Nicht jeder, der programmieren lernen will, muss auch unbedingt in Mathe besonders fit sein.
(Wobei es natürlich hilft und man die meisten Dinge mit der Zeit eh mitbekommt)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

MoonGuy
Beiträge: 231
Registriert: Fr Okt 08, 2010 2:49 pm

Re: CodeBlock -std=c99 or -std=gnu99

Beitrag von MoonGuy » So Nov 06, 2011 6:15 pm

Dirty Oerti hat geschrieben:
MoonGuy hat geschrieben:Es stimmt zwar, aber man könnte auch einfach den % Operator einführen. Dann ist der ganze Ausdruck leichter zu verstehen.
..zumindest, wenn man die Mathematischen Grundlagen dahinter kennt und weiß, was der Modulo Operator ist bzw was Restklassen sind, sprich wenn man die Grundlagen der Zahlentheorie kennt.
Und davon kann man wirklich nicht ausgehen ;) Nicht jeder, der programmieren lernen will, muss auch unbedingt in Mathe besonders fit sein.
(Wobei es natürlich hilft und man die meisten Dinge mit der Zeit eh mitbekommt)
Mit einführen meinte ich schon, dass es eben erklärt wird, was er macht. Bei einer Bit-Überprüfung werden zwei Dinge gefragt: Kenntnis über den &-Operator und Verständnis vom Binärsystem. Beim Modulo-Operator reicht das Verständnis des Operators und die Erinnerung an Grundschulmathematik.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: CodeBlock -std=c99 or -std=gnu99

Beitrag von Xin » Mo Nov 07, 2011 10:32 am

Hallo Martin,

willkommen im Forum. Den Link auf die Uservorstellung hast Du ja bereits.
martin753 hat geschrieben:Das obere gebe ich bei CodeBlock ein und bei meiner Konsole gebe ich gcc while.c (dieses Kapitel hab ich nach while in meinem Ordner genannt) ein.
Dann kommt folgender Fehler:
error: 'for' loop initial declarations are only allowed in C99 mode
note: use option -std=c99 or -std=gnu99 to compile your code


Bitte helfen, ich will hier weiter lernen, das macht mir riesen Spaß :)
Hmm... ich schreibe das C-Tutorial - es ist ja noch nicht fertig - und habe auch noch auf der Todoliste stehen, alle Programme nochmals durchzukompilieren und auf Fehlerfreiheit zu prüfen. Soetwas ist dann natürlich frustrierend.

Du kannst Dir erstmal einfach behelfen indem Du statt

Code: Alles auswählen

for( unsigned int i = 0; bedingung; ... )

Code: Alles auswählen

unsigned int i;
for( i = 0; bedingung; ... )
schreibst.

Wenn Du mehrere for-Schleifen untereinander hast, darfst Du i allerdings nur einmal deklarieren.

Dafür ist Wiki und Forum da. Wenn was nicht passt, kann man sich melden und dann wird das Wiki auch mit Deiner Hilfe verbessert, weil Du Dich gemeldet hast. :-)
MoonGuy hat geschrieben:Bin eben nicht so ganz von diesem Satz aus dem Tutorial überzeugt:
Wir werden uns diesen Ausdruck in einer späteren Lektion wieder ansehen und erklären - also: Neugierig blieben! Bis dahin gilt ganz einfach: Er funktioniert.
Es stimmt zwar, aber man könnte auch einfach den % Operator einführen. Dann ist der ganze Ausdruck leichter zu verstehen.
Dafür müsste man Wissen, was Modulo ist. Kannst Du Modulo im Kopf? Wenn Du überlegen musst, wieviel -1 % 3 ist, dann ist Modulo genauso abstrakt für einen Einsteiger zu erklären wie !(Wert & 1). ^^
Das ist Lektion 6, man steht also noch recht weit am Anfang und irgendwo muss man auch immer mal was auslassen, um sich auf das Problem zu konzentrieren.

Ich gebe Dir allerdings recht, dass Modulo bei positiven Zahlen vermutlich eher als Grundrechenart betrachtet wird, als !(Wert & 1) und damit für den benutzten Zahlenbereich wenigstens teilweise erklärbar ist.
Ich werde das auf Modulo ändern.

Edit: So, alle Deklarationen aus den For-Schleifen entfernt.
@martin753: Für mich ist Feedback sehr wichtig, wenn irgendwas nicht sofort klappt. Das Tutorial muss ich so oder so nochmal zur Kontrolle lesen und dann ist das Gefahr, dass ich vielleicht nicht gut erklärte Dinge überlese, weil ich sie schon gut genug kenne. Von daher ist Dein Feedback durchaus wichtig, um das Tutorial zu verbessern.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten