Der Bedingungsoperator in C im Vergleich zu C
Der Bedingungsoperator (?) in C weist subtile Unterschiede zu seinem Gegenstück in C auf, insbesondere in seine Fähigkeit, einen L-Wert zurückzugeben.
Einen L-Wert zurückgeben
In C kann der Bedingungsoperator einen L-Wert zurückgeben, bei dem es sich um eine Variable oder einen Ausdruck handelt, der zugewiesen werden kann . Dies ermöglicht Operationen wie:
<code class="c++">(true ? a : b) = 1;</code>
In diesem Beispiel wird der Variablen a der Wert 1 zugewiesen, wenn die Bedingung wahr ist.
Im Gegensatz dazu lässt C keine L-Werte zu vom Bedingungsoperator zurückgegeben werden. Um einen ähnlichen Effekt zu erzielen, muss man if/else-Anweisungen verwenden oder Referenzen direkt manipulieren:
<code class="c">*(true ? &a : &b) = 1;</code>
Operatorpriorität
Zusätzlich hat der bedingte Operator von C gleich Priorität mit dem Zuweisungsoperator (=) und Gruppen von rechts nach links. Das bedeutet, dass Code wie:
<code class="c++">true ? a = 1 : b = 2;</code>
gültig ist. In C tritt jedoch ohne Klammern, die den letzten Ausdruck einschließen:
<code class="c">true ? a = 1 : (b = 2);</code>
ein Fehler auf.
Das obige ist der detaillierte Inhalt vonWie unterscheidet sich die Bedingungsoperatorfunktion zwischen C und C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!