Wie nennt man if-Abfragen die in einer Funktion mit drin sind?
-
GoTo
???
-
SG1 schrieb:
edit: Dein Beispiel ist aber wirklich nur Spaghetti-Code, nichts anderes.
Ich weiß.
@Sheldor, SG1 hat recht.
Dann noch eine Frage, wie wäre das auf
scanf("%s", &weiter) ? weiter == 'j' || weiter == 'n' goto nochmal;
anzuwenden?
Es soll heißen -> wenn "weiter" 'j' oder weiter 'n' ist OK sonst gehe zu "nochmal"
Und zwar im "Spaghetti Style" wenn ich bitten darf
-
Syntaxfehler. Zu jedem ? gehört ein :.
-
do { scanf("%s", &weiter); } while (weiter != 'j' && weiter != 'n');
-
do { scanf("%c", &weiter); /* kein %s hier, sind nur Zeichen*/ } while (weiter != 'j' && weiter != 'n');
-
ender schrieb:
Und zwar im "Spaghetti Style" wenn ich bitten darf
Wieso ?
@maccaroni
Er will Spaghetti Code !
-
*edit
Alles klar !
Gruss Sheldor
-
Will haben Spaghetti code bittö
Rein aus dem Grund, falls man mal was schnell ausprobieren will, z.B.
eine Funktion, in der eine kleine Abfrage sein soll, damit das schnell geht.@Sheldor, weiter unten im Programm "würde" dann die Abfrage kommen ob nun 'j' oder 'n' eingegeben wurde.
Hier wird lediglich geprüft, wurde überhaupt eines der zugelassenen Zeichen eingegeben.
-
:edit Hups, sorry Sheldor...war wohl zu langsam
-
Das ist kein Spaghetti, sondern ein Syntaxfehler.
goto
ist kein Ausdruck, kann also insbesondere kein Operand eines ternären Operators sein. Es bleibt einem nur die Möglichkeit, das alsif
-Anweisung zu formulieren.
-
Danke, eine Lösende Antwort.
Also "goto" kann also nicht Teil eines Ternären Operands sein, gut.
Wie müsste das denn aussehen um den selben Effekt zu ergeben.
Also im selben Schreibstyle nur halt ohne goto-Anweisung?
-
Bedingung ? Wahrzweig : Falschzweig;
ist gleich mit
if (Bedingung) Wahrzweig; else Falschzweig
Benutze lieber das do-while. Sonst wird dir von den Nudeln schlecht.
-
Danke dir Dirk, nur da gibt es ein Problem, ich mag Nudeln
-
ender schrieb:
Also "goto" kann also nicht Teil eines Ternären Operands sein, gut.
Das entscheidende ist, dass goto eine Anweisung ist und deshalb nicht irgendwo stehen darf, wo ein Ausdruck stehen muss:
if (goto x) { ... }
geht z.B. auch nicht
Wie müsste das denn aussehen um den selben Effekt zu ergeben.
Also im selben Schreibstyle nur halt ohne goto-Anweisung?Du willst ja eine Schleife, das geht nicht mit dem ?: Operator.
-
do{ printf("\n\n\nNochmal?: "); scanf("%c", &weiter) weiter == 'j' || weiter == 'n' ? wahr = 1 : wahr = 0, printf("Das ist ungueltig!\n\n"); }while(wahr == 1);
Kann man bei den Zweigen (Falschzweig & Wahrzweig) 2 Dinge machen lassen?,
wenn ja -> wie?
-
- Gegenfrage: Warum benutzt du nicht if-else?
- ? : ist normalerweise eine Zuweisung.
-
@knivil, weiter oben ist die Erklärung
Ich finde man sollte alle Schreibstile kennen und Spaghetti gehört eben dazu
Das heißt man kann in einem Ternären Operand keine Funktionen hernehmen sondern nur Werte zuweisen und ähnliches?
-
do{ printf("\n\n\n\t\t\tNochmal?: "); scanf("%s", &weiter) weiter == 'j' || weiter == 'n' ? wahr = 1 : wahr = 0; printf("Das ist ungueltig!\n\n"); }while(wahr == 1);
Kompiler sagt, das in Zeile 3 ein Fehler ist, nur ich komm einfach nicht drauf.
-
Hinter dem scanf fehlt irgendwas.
-
SG1 schrieb:
Hinter dem scanf fehlt irgendwas.
Und zwar Nudeln.
Das heißt man kann in einem Ternären Operand keine Funktionen hernehmen sondern nur Werte zuweisen und ähnliches?
Nein.
Du kennst jetzt Nudelcode, d.h. kannst du jetzt ordentlich arbeiten. Und mal schnell was testen, also Faulheit, ist einschlechter Grund.