Variablendeklaration im if-Ausdruck in C
In C ist die Syntax für die Variablendeklaration innerhalb der Bedingung eines if-Ausdrucks häufig eingeschränkt. Es stellt sich die Frage, ob solche Einschränkungen standardbasiert oder Compiler-spezifisch sind.
Der C-Standard von 2003 (6.4.3) erlaubt Variablendeklarationen innerhalb einer if-Bedingung, wobei sich der Geltungsbereich auf die kontrollierten Unteranweisungen erstreckt. Klammern um die Deklaration oder Mehrfachdeklarationen innerhalb der Bedingung sind jedoch nicht ausdrücklich verboten.
Frühere Versionen von C verhielten sich in Bezug auf Klammern und Mehrfachdeklarationen inkonsistent. In den bereitgestellten Codebeispielen:
Diese Einschränkung ist unpraktisch für Szenarien, in denen nur eine Deklaration innerhalb der Bedingung erforderlich ist.
C 17-Lösung
C 17 hat eine Lösung für dieses Problem eingeführt:
if (int a = Func1(), b = Func2(); a && b) { // Do stuff with a and b. }
Diese Syntax verwendet ein Semikolon (;), um die Deklaration von der Bedingung zu trennen. Es ermöglicht die Deklaration mehrerer Variablen innerhalb einer einzigen Bedingung, wodurch die vorherigen Unannehmlichkeiten beseitigt werden.
Das obige ist der detaillierte Inhalt vonKann der „if'-Ausdruck von C Variablendeklarationen über Standards und Compiler hinweg konsistent verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!