Variablendeklaration innerhalb von „if“-Ausdrücken in C
In C die Möglichkeit, Variablen innerhalb der Bedingung einer „if“-Anweisung zu deklarieren war Gegenstand von Einschränkungen. Compiler, einschließlich Visual Studio 2008, stoßen häufig auf Schwierigkeiten mit in Klammern eingeschlossenen Variablendeklarationen oder mehreren Deklarationen innerhalb einer einzelnen Bedingung.
Gemäß Abschnitt 6.4.3 des C-Standards von 2003 haben in einer Auswahlanweisung deklarierte Variablen einen Gültigkeitsbereich die bis zum Ende der von der Bedingung gesteuerten Unteranweisungen reicht. Der Standard befasst sich jedoch nicht explizit mit der Verwendung von Klammern oder mehreren Deklarationen.
Zum Beispiel kann der folgende Code nicht kompiliert werden:
if((int a = Func1())) { // Fails to compile. }
Auch in Fällen, in denen nur eine Deklaration erforderlich ist , kann diese Einschränkung frustrierend sein. Bedenken Sie Folgendes:
bool a = false, b = true; if(bool x = a || b) { }
Um „x“ innerhalb des „if“-Körperbereichs auf „false“ zu setzen, erfordert die Deklaration Klammern. Allerdings sind Klammern innerhalb der Bedingung nicht zulässig, da sie die Deklaration von „x“ außerhalb des Körpers erzwingen und an einen größeren Geltungsbereich weitergeben würden.
Ab C 17 wurden die Einschränkungen behoben. Der folgende Code ist jetzt möglich:
if (int a = Func1(), b = Func2(); a &&& b) { // Do stuff with a and b. }
Die Verwendung von ';' Anstelle von „,“ wird die Deklaration von der Bedingung getrennt, wodurch die vorherigen Einschränkungen aufgehoben werden.
Das obige ist der detaillierte Inhalt vonKönnen C-IF-Anweisungen Variablen innerhalb ihrer Bedingungen deklarieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!