Namespaces
Variants

if statement

From cppreference.net

Führt Code bedingt aus.

Wird verwendet, wenn Code nur ausgeführt werden soll, falls eine bestimmte Bedingung wahr ist.

Inhaltsverzeichnis

Syntax

attr-spec-seq  (optional) if ( expression ) statement-true (1)
attr-spec-seq  (optional) if ( expression ) statement-true else statement-false (2)
attr-spec-seq - (C23) eine optionale Liste von Attributen , angewendet auf die if -Anweisung
expression - ein Ausdruck eines beliebigen skalaren Typs
statement-true - eine beliebige Anweisung (oft eine zusammengesetzte Anweisung), die ausgeführt wird, wenn expression ungleich 0 vergleicht
statement-false - eine beliebige Anweisung (oft eine zusammengesetzte Anweisung), die ausgeführt wird, wenn expression gleich 0 vergleicht

Erklärung

expression muss ein Ausdruck eines beliebigen skalaren Typs sein.

Wenn expression ungleich dem ganzzahligen Nullwert verglichen wird, statement-true wird ausgeführt.

In der Form (2) , falls expression gleich dem ganzzahligen Nullwert verglichen wird, statement-false wird ausgeführt.

Wie bei allen anderen Auswahl- und Iterationsanweisungen hat die gesamte if-Anweisung ihren eigenen Blockgültigkeitsbereich:

enum {a, b};
int different(void)
{
    if (sizeof(enum {b, a}) != sizeof(int))
        return a; // a == 1
    return b; // b == 0 in C89, b == 1 in C99
}
(seit C99)

Hinweise

Das else ist immer mit dem nächstgelegenen vorhergehenden if assoziiert (mit anderen Worten, wenn statement-true ebenfalls eine if -Anweisung ist, dann muss diese innere if -Anweisung ebenfalls einen else -Teil enthalten):

int j = 1;
if (i > 1)
    if(j > 2)
        printf("%d > 1 and %d > 2\n", i, j);
    else // dieses else gehört zu if (j > 2), nicht zu if (i > 1)
        printf("%d > 1 and %d <= 2\n", i, j);

Wenn statement-true über eine goto -Anweisung erreicht wird, wird statement-false nicht ausgeführt.

Schlüsselwörter

if , else

Beispiel

#include <stdio.h>
int main(void)
{
    int i = 2;
    if (i > 2)
    {
        printf("i > 2 is true\n");
    }
    else
    {
        printf("i > 2 is false\n");
    }
    i = 3;
    if (i == 3)
        printf("i == 3\n");
    if (i != 3)
        printf("i != 3 is true\n");
    else
        printf("i != 3 is false\n");
}

Ausgabe:

i > 2 is false
i == 3
i != 3 is false

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 6.8.5.2 Die if-Anweisung (S: 154)
  • C17-Standard (ISO/IEC 9899:2018):
  • 6.8.4.1 Die if-Anweisung (S: 108-109)
  • C11-Standard (ISO/IEC 9899:2011):
  • 6.8.4.1 Die if-Anweisung (S: 148-149)
  • C99-Standard (ISO/IEC 9899:1999):
  • 6.8.4.1 Die if-Anweisung (S: 133-134)
  • C89/C90-Standard (ISO/IEC 9899:1990):
  • 3.6.4.1 Die if-Anweisung

Siehe auch

C++ Dokumentation für if Anweisung