ist das richtig?
-
ist das:
int typefield = (strcmp(atts[0],"type") == 0) ? 1 : 3;
das selbe wie:
int typefield=0; if (strcmp(atts[0],"type") == 0) { typenfield=1; } else { typenfield=3; }
oder wie würde ich es wenns falsch ist denn richtig interpretieren können?
danke schonmal
sven
-
Ich möchte mal so mutig sein und behaupten es sei beides das gleiche
-
Sollte es dann nicht so sein?
int typefield; (strcmp(atts[0],"type") == 0) ? typenfield=1 : typenfield=3;
-
So gehts auch, richtig sind aber trotzdem alle 3 Möglichkeiten.
-
danke
dann hab ich doch richtig geraten!
sven
-
Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC mit dem Visual C++ in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
haedfinger schrieb:
Sollte es dann nicht so sein?
int typefield; (strcmp(atts[0],"type") == 0) ? typenfield=1 : typenfield=3;
Das ist IMO unüblich.
-
Das ist IMO unüblich.
genau wenn schon dann gleich so
typenfield=strcmp(atts[0],"type")?3:1;
-
int typefield;
(strcmp(atts[0],"type") == 0) ? typenfield=1 : typenfield=3;Ist zwar unüblich, aber durchaus korrekt. Man könnte als "typenfield=1" z.B.
auch eine Funktion angeben.
-
Man findet solche Sachen oft bei Einstellungtest größerer Softwarefirmen!
Aber woher kommt eigendlich dieser Syntax?
Es ist mit Sicherheit kürzer zu schreiben!
Aber komplexere If Abfragen kann man damit doch vergessen, es sei denn man packt die komplexerer Abfrage in eine Funktion wie dasdas schon schrieb!
Ich finde zwar die klassische Schreibweise übersichtlicher aber wenn man es einmal verstanden hat, kann man es auch ganz gut lesen!sven
-
Ich finde für kleine Abfragen ist ? : sehr elegant, vor allem, weil du dir if() { } else {} ersparst. Wenn du aber große if-Abfragen hast, ist es besser if else zu benuzten, denn das ist jedenfals übersichtlicher
x=a ? ( (b ? c :d) : (e ? f : g));
ist nicht so übersichtich wie
if (a) { if (b) x=c; else x=d; } else { if (e) x=f; else x=g; }