Bedingte Operator-Diskrepanzen zwischen C und C
Der bedingte Operator (?) bietet unterschiedliche Verhaltensweisen in C und C. Dies betrifft insbesondere die Fähigkeit, einen L-Wert zurückzugeben.
In C kann der Operator einen L-Wert zurückgeben und Ausdrücke wie folgt zulassen:
(true ? a : b) = 1;
C schränkt diese Funktionalität jedoch ein und macht die Verwendung erforderlich von if/else oder direkten Referenzen:
*(true ? &a : &b) = 1;
Zusätzlich gewährt C den Operatoren ?: und = die gleiche Priorität und gruppiert sie von rechts nach links. Dies bedeutet, dass Folgendes in C syntaktisch korrekt ist:
(true ? a = 1 : b = 2);
Im Gegensatz dazu erfordert C Klammern, um solche Ausdrücke aufzulösen:
(true ? a = 1 : (b = 2));
Das obige ist der detaillierte Inhalt vonWarum behandelt der Bedingungsoperator L-Werte in C und C unterschiedlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!