Heim > Backend-Entwicklung > C++ > Kann der „if'-Ausdruck von C Variablendeklarationen über Standards und Compiler hinweg konsistent verarbeiten?

Kann der „if'-Ausdruck von C Variablendeklarationen über Standards und Compiler hinweg konsistent verarbeiten?

Barbara Streisand
Freigeben: 2024-11-27 13:26:12
Original
571 Leute haben es durchsucht

Can C  's `if` Expression Handle Variable Declarations Consistently Across Standards and Compilers?

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:

  • if(int a = Func1()) entspricht dem Standard und deklariert a innerhalb der if-Bedingung.
  • if((int a = Func1( ))) kann aufgrund von Klammern nicht kompiliert werden.
  • if((int a = Func1()) && (int b = Func2())) erfordert die Deklaration von x außerhalb des if-Blocks aufgrund fehlender Klammern.

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.
}
Nach dem Login kopieren

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!

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