Gast
#1274309
ucFCWrite = ((urFlow & UI_FLOW_MASK) ? X_TRUE : X_FALSE); ich verstehe eigentlich folgendes nicht: ? X_TRUE : X_FALSE); Danke
|
Anzeige
|
Was bedeutet diese C Zeile
Gast
#1274309
ucFCWrite = ((urFlow & UI_FLOW_MASK) ? X_TRUE : X_FALSE); ich verstehe eigentlich folgendes nicht: ? X_TRUE : X_FALSE); Danke
Gast
#1274310
Das ist eine verkürzte Schreibweise für if(urFlow & UI_FLOW_MASK) X_TRUE; else X_FALSE; Hans Stefan schrieb: > ucFCWrite = ((urFlow & UI_FLOW_MASK) ? X_TRUE : X_FALSE); > > ich verstehe eigentlich folgendes nicht: > > ? X_TRUE : X_FALSE); Dann solltest du dir ein C-Buch zulegen. Das ist der ternäre Vergleichsoperator d = a ? b : c ist gleichwertig zu if( a ) d = b; else d = c; das kann man auch so schreiben:
if(urFlow & UI_FLOW_MASK)
ucFCWrite = X_TRUE;
else
ucFCWrite = X_FALSE;
dh.: (Ausdruck) ? (wenn_wahr) : (wenn_falsch);
wenn der Ausdruck wahr ist, dann gilt das element vor dem Doppelpunkt,
wenn nicht, dann der nach dem Doppelpunkt...
Gast
#1274316
Das ist eine verkürzte Schreibweise für if(urFlow & UI_FLOW_MASK) ucFCWrite = X_TRUE; else ucFCWrite = X_FALSE;
Gast
#1274318
Wow das ging schnell. besten Dank Es ist übrigens nicht ganz eine verkürzte Schreibweise. Nur auf den ersten Blick ;) Hier kann man nämlich kein if einbauen.
Hoffe jetzt keinen Mist geschrieben zu haben. Simon K. schrieb:
> Hoffe jetzt keinen Mist geschrieben zu haben.
Nein, hast du nicht.
Der wesentliche Unterschied zwischen den beiden Formen ist, dass es sich
bei ?: um einen echten Operator handelt, der in arithmetischen
Ausdrücken verwendet werden kann.
Simon K. schrieb:
> Hoffe jetzt keinen Mist geschrieben zu haben.
Nur nen Syntaxfehler ;)
Gast
#1274645
>> Hoffe jetzt keinen Mist geschrieben zu haben. > Nur nen Syntaxfehler ;) Eigenbezug oder Sofort-Aufforderung an den Leser? :-D Michael G. schrieb: > Simon K. schrieb: > >> Hoffe jetzt keinen Mist geschrieben zu haben. > > Nur nen Syntaxfehler ;) Stimmt! ;)
Gast
#1274677
Simon K. schrieb:
> Hier kann man nämlich kein if einbauen.
Meinste nich?
Ist erlaubt :-) Ein Präprozessor #if ist ja nicht das Gleiche Du Schelm :-)
Gast
#1274696
böse, böse, böse ... ich mag sowas nicht. Vor allem wenn es in macros verwendet wird und diese sich dann schachteln. nach 5 Fragezeichen im macro (preprozessor output) sieht man überhaupt nicht mehr durch. Und solchen Code musste ich mal auf fehler überprüfen. Ist nett wenn es sehr einfach gehalten ist und sofort einsehbar, aber if/else ist auch nicht soviel länger. JL
Gast
#1274732
Ich sach dazu nur: Es leben die C++-Templates, sie leben hoch:
http://www.bdsoft.com/tools/stlfilt.html
Gast
#1275180
Leute die ternäres Zeug verwenden sollten auch diese sources problemlos verstehen: http://www.de.ioccc.org/years.html
Gast
#1275597
>ucFCWrite = ((urFlow & UI_FLOW_MASK) ? X_TRUE : X_FALSE); >ich verstehe eigentlich folgendes nicht: >? X_TRUE : X_FALSE); >----------------------------------------------------------------- >Das ist eine verkürzte Schreibweise für >if(urFlow & UI_FLOW_MASK) > X_TRUE; >else > X_FALSE; if urFlow & UI_FLOW_MASK then ... else ... end if Was liest sich angenehmer? Ein Compiler macht das gleiche draus! das böse Basic!
Gast
#1275769
<offtopic> Jaja, geh du mit deinem Basic erstmal Array und Vektoren durch.
Soviel zum pösen Basic. Wer bei so simplen Sachen wie dem IF in C schon mit Basic und andren vergleicht und meint, die anderen ließen sich leichter lesen... sorry, der soll bitte wieder in den Kindergarten und die Finger vom Programmieren lassen. Z8 schrieb:
> Was liest sich angenehmer? Ein Compiler macht das gleiche draus!
Das hier
liest sich um einiges angenehmer als
oder gar, Gott bewahre, eine geschachtelte if-then-else Leiste.
Gast
#1275893
So einen Fall könnte man sogar mit einem goto in C noch eleganter programmieren. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|