Heim > Backend-Entwicklung > C++ > Hauptteil

Kann der bedingte Operator einem L-Wert in C vs. C zugewiesen werden?

Barbara Streisand
Freigeben: 2024-11-02 11:33:02
Original
226 Leute haben es durchsucht

Can the Conditional Operator Assign to an Lvalue in C vs. C  ?

Die Nuancen des bedingten Operators in C vs. C

Der bedingte Operator oder ternäre Operator, gekennzeichnet durch die ?:-Syntax, wird abgespielt eine entscheidende Rolle sowohl in C als auch in C . Es besteht jedoch ein subtiler, aber signifikanter Unterschied zwischen den beiden Sprachen hinsichtlich der Art und Weise, wie dieser Operator L-Werte behandelt.

L-Wert-Verhalten

In C kann der bedingte Operator keinen Wert zuweisen ein L-Wert (linker Wert), eine Variable oder ein Objekt, das geändert oder zugewiesen werden kann. Beispielsweise ist der folgende Code in C ungültig:

<code class="c">(true ? a : b) = 1;</code>
Nach dem Login kopieren

Stattdessen muss man auf eine if-else-Anweisung zurückgreifen oder einen Zeiger verwenden, um den Wert zuzuweisen:

<code class="c">*(true ? &a : &b) = 1;</code>
Nach dem Login kopieren

Vorrang und Assoziativität

Ein weiterer wichtiger Unterschied betrifft den Vorrang und die Assoziativität des Bedingungsoperators relativ zum Zuweisungsoperator (=). In C haben die Operatoren ?: und = die gleiche Priorität und werden von rechts nach links gruppiert. Dies impliziert, dass der folgende Code gültig ist:

<code class="cpp">(true ? a = 1 : b = 2);</code>
Nach dem Login kopieren

In C würde das Fehlen gleicher Priorität jedoch Klammern um den zweiten Ausdruck erfordern:

<code class="c">(true ? a = 1 : (b = 2));</code>
Nach dem Login kopieren

Auswirkungen in Üben

Dieser Unterschied im Verhalten hat Auswirkungen auf verschiedene Szenarios, beispielsweise auf das Festlegen von Werten von Klassenmitgliedern in Konstruktoren oder das Initialisieren von Verweisen auf Objekte. C-Programmierer müssen sich der L-Wert-Beschränkung in C bewusst sein und alternative Ansätze verwenden, wenn sie mit L-Werten in bedingten Ausdrücken arbeiten.

Das obige ist der detaillierte Inhalt vonKann der bedingte Operator einem L-Wert in C vs. C zugewiesen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!