String inkrementieren
-
Guenther schrieb:
CStoll schrieb:
Das gehört schon fast in die Rubrik "fehlendes Grundlagenwissen"
JETZT fühle ich mich schlecht.
Ärgere dich nicht, CStoll hat unrecht. Mit "break" kommt man nicht aus jeder Schleife raus.
-
@Guenther: Sorry, das war nicht beabsichtigt.
Andromeda schrieb:
Ärgere dich nicht, CStoll hat unrecht. Mit "break" kommt man nicht aus jeder Schleife raus.
Kannst du das auch belegen? Sprich: Zeig mir eine Schleife, die du nicht per break verlassen kannst.
-
Ich denke er meint, dass man mit break nur aus der inneren Schleife rausspringen kann, nicht aber aus der äußeren. Wobei das auch eine sehr esoterische Auslegung der Sache wäre.
-
CStoll schrieb:
Kannst du das auch belegen? Sprich: Zeig mir eine Schleife, die du nicht per break verlassen kannst.
Eine Schleife ist per Definition die "wiederholte Ausführung eines Programmteils". In diesem Sinne kann diese Schleife
int x = 10; loop: printf ("Hello\n"); if (x-- != 0) goto loop;
nicht mit "break" abgebrochen werden.
-
Das ist auch keine Schleife im C- Sinn, sondern primitivstes goto-Gegurke (und gehört imho sowieso verboten). Schleifen in C sind for(), while() und do-while(). Punkt.
-
Andromeda schrieb:
Eine Schleife ist per Definition die "wiederholte Ausführung eines Programmteils".
Das ist deine Definition? Oder wessen? Egal, es ist _nicht_ die Definition des ANSI C Standards.
-
Hallo ihr beiden,
CStoll schrieb:
Das ist auch keine Schleife im C- Sinn, sondern primitivstes goto-Gegurke
Nein, das ist IMHO legaler C Code.
TactX schrieb:
...es ist _nicht_ die Definition des ANSI C Standards.
Was eine Schleife ist oder nicht ist, unterliegt nicht der Zuständigkeit des ANSI C Standards. Außerdem schreibt der Standard nicht vor, daß die Konstruktion von Schleifen nur mit Hilfe der C-Kontrollstrukturen "for/while/do" erlaubt ist.
-
Andromeda schrieb:
Hallo ihr beiden,
CStoll schrieb:
Das ist auch keine Schleife im C- Sinn, sondern primitivstes goto-Gegurke
Nein, das ist IMHO legaler C Code.
Auch legaler C Code kann "Gegurke" sein. Und mit deinem goto kannst du von mir aus in Assambler weitermachen - in vernünftig strukturierten C Programmen gibt es nur SEHHR wenige Situationen, wo man es benötigt.
TactX schrieb:
...es ist _nicht_ die Definition des ANSI C Standards.
Was eine Schleife ist oder nicht ist, unterliegt nicht der Zuständigkeit des ANSI C Standards. Außerdem schreibt der Standard nicht vor, daß die Konstruktion von Schleifen nur mit Hilfe der C-Kontrollstrukturen "for/while/do" erlaubt ist.
Nein, aber break ist Bestandteil des ANSI C Standards - und bezieht sich deshalb auf die ANSI-Definition, was eine Schleife ist.
-
Hallo CStoll,
CStoll schrieb:
Auch legaler C Code kann "Gegurke" sein. Und mit deinem goto kannst du von mir aus in Assambler weitermachen...
Es ist schwer Vorurteile wieder los zu werden, aber vielleicht siehst du dir mal das hier an: http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf
CStoll schrieb:
...aber break ist Bestandteil des ANSI C Standards - und bezieht sich deshalb auf die ANSI-Definition, was eine Schleife ist.
Du mißverstehst da etwas. Der ANSI C Standard definiert sogenannte "Iteration statements", die einen Schleifenkörper haben. Aus so einem Schleifenkörper kann man mit "break" herausspringen. Er definiert nicht was Schleifen sind.
-
Andromeda schrieb:
Hallo CStoll,
CStoll schrieb:
Auch legaler C Code kann "Gegurke" sein. Und mit deinem goto kannst du von mir aus in Assambler weitermachen...
Es ist schwer Vorurteile wieder los zu werden, aber vielleicht siehst du dir mal das hier an: http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf
Wenn ich Zeit habe, gerne. Aber vorerst bleibe ich dabei, daß goto eher auf Low-Level (Assambler) etwas zu suchen hat als in einem C Programm
CStoll schrieb:
...aber break ist Bestandteil des ANSI C Standards - und bezieht sich deshalb auf die ANSI-Definition, was eine Schleife ist.
Du mißverstehst da etwas. Der ANSI C Standard definiert sogenannte "Iteration statements", die einen Schleifenkörper haben. Aus so einem Schleifenkörper kann man mit "break" herausspringen. Er definiert nicht was Schleifen sind.
Und was bitte bedeutet das Wort "Iteration statement" für dich?
-
Hallo CStoll,
CStoll schrieb:
Und was bitte bedeutet das Wort "Iteration statement" für dich?
Damit sind die eingebauten Schleifenanweisungen gemeint (for, while und do). Ins Deutsche übersetzt könnte man "Wiederholungsanweisung" dazu sagen.
-
Jedem so, wie er's mag - jetzt mußt du mir nur noch den Unterschied zwischen Wiederholung und Schleife erklären
(oder wir lassen das Thema sein, hat schließlich nichts mehr mit dem Ursprung des Threads zu tun)PS: Kann es sein, daß sich die Diskussionen über Sinn und Unsinn von goto in letzter Zeit häufen?
-
Hallo,
CStoll schrieb:
PS: Kann es sein, daß sich die Diskussionen über Sinn und Unsinn von goto in letzter Zeit häufen?
Unbedingte Sprünge sind, seit es strukturierte Programmiersprachen gibt, ein ziemliches Reizthema. Du hast allerdings Recht - Es lohnt sich nicht, darüber zu diskutieren. Die Meisten lehnen "goto" kategorisch ab. Daran wird sich so schnell nichts ändern.