Wie nennt man if-Abfragen die in einer Funktion mit drin sind?
-
Hallo Leute,
es gibt ja solche Abfragen die mit in einer Zeile mit einer Funktion stehen
z.B. (ich weiß, da sind sicher jetzt Fehler drin, aber bitte mal nur das Prinzip beachten:blabla: scanf("%s") ? ist == bla && bla == ble, goto blabla : 1;
Wie nennt man so derartiges?, also gibt es dafür einen Fachbegriff oder sonstiges?
Für Infos wäre ich dankbar, auch Verbesserungen des Beispiels.
-
-
Nein, du verstehst mich falsch.
Ich meine "? ist == bla && bla == ble, goto blabla : 1" den Teil.
Die Benutzung von Logischen Operatoren gleich nach der Eingabe der Funktion.
-
Das ist "der ternäre Operator". Ternär ist eigentlich eine Eigenschaft, aber da das der einzige Operator mit dieser Eigenschaft ist, hat sich das als Name durchgesetzt. Vollkommen korrekt müsste man wohl Konditionaloperator sagen, aber das hab ich ehrlich noch nie gehört.
Im Englischen ist es auch conditional operator.
http://en.wikipedia.org/wiki/%3F:
edit: Dein Beispiel ist aber wirklich nur Spaghetti-Code, nichts anderes.
-
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.