Initialisierungslisten in Operatorargumenten
Die Verwendung von Initialisierungslisten auf der rechten Seite (RHS) von Operatoren, eine Funktion, die in fehlt C 11 wirft Fragen zur Begründung dieser Einschränkung auf.
Der C-Standard verbietet die direkte Verwendung von Initialisierungslisten auf der RHS von binären Operatoren wie „“, „*“ oder „<<“. Dies liegt daran, dass Initialisierungslisten nicht als Ausdrücke gemäß §5 des Standards gelten, der ihre Verwendung in Funktionen und binären Operatorargumenten verbietet.
Um die Verwendung von Initialisierungslisten zu erleichtern, führt der Standard Ausnahmen ein. Für binäre Operatoren gibt es jedoch keine solche Ausnahme, sodass Initialisierungslisten auf beiden Seiten eingeschränkt sind.
Die Entscheidung hinter dieser Einschränkung wird in N2215 von Stroustrup und Dos Reis (2007) erläutert. Das Zulassen von Initialisierungslisten als linker Operand würde aufgrund der Verwendung von geschweiften Klammern sowohl für Initialisierungslisten als auch für Blöcke zu Analysekonflikten führen.
Darüber hinaus wurde erwogen, Initialisierungslisten nur auf der rechten Seite und nicht auf beiden Seiten zuzulassen eine übermäßige Inkonsistenz erzeugen. Daher sind Initialisierungslisten in bestimmten Kontexten zulässig, z. B. bei Funktionsargumenten, Indizes und Zuweisungen, jedoch nicht im allgemeinen Fall von binären Operatorargumenten.
Das obige ist der detaillierte Inhalt vonWarum sind Initialisierungslisten in C-Binäroperator-Argumenten eingeschränkt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!