Namespaces
Variants

if statement

From cppreference.net

Ejecuta código condicionalmente.

Se utiliza cuando el código necesita ejecutarse solo si alguna condición es verdadera.

Contenidos

Sintaxis

attr-spec-seq  (opcional) if ( expression ) statement-true (1)
attr-spec-seq  (opcional) if ( expression ) statement-true else statement-false (2)
attr-spec-seq - (C23) una lista opcional de atributos , aplicada a la sentencia if
expression - una expresión de cualquier tipo escalar
statement-true - cualquier sentencia (frecuentemente una sentencia compuesta), que se ejecuta si expression se compara como diferente de 0
statement-false - cualquier sentencia (frecuentemente una sentencia compuesta), que se ejecuta si expression se compara como igual a 0

Explicación

expression debe ser una expresión de cualquier tipo escalar .

Si expression se compara como diferente del entero cero, statement-true se ejecuta.

En la forma (2) , si la expresión es igual a cero entero, se ejecuta la sentencia-falsa .

Al igual que todas las demás sentencias de selección e iteración, la sentencia if completa tiene su propio ámbito de bloque:

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
}
(desde C99)

Notas

El else siempre se asocia con el if precedente más cercano (en otras palabras, si statement-true también es una sentencia if , entonces esa sentencia if interna debe contener también una parte else ):

int j = 1;
if (i > 1)
    if(j > 2)
        printf("%d > 1 and %d > 2\n", i, j);
    else // este else pertenece a if (j > 2), no a if (i > 1)
        printf("%d > 1 and %d <= 2\n", i, j);

Si statement-true se ingresa a través de un goto , statement-false no se ejecuta.

Palabras clave

if , else

Ejemplo

#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");
}

Salida:

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

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 6.8.5.2 La sentencia if (p: 154)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 6.8.4.1 La sentencia if (p: 108-109)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 6.8.4.1 La sentencia if (p: 148-149)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 6.8.4.1 La sentencia if (p: 133-134)
  • Estándar C89/C90 (ISO/IEC 9899:1990):
  • 3.6.4.1 La sentencia if

Véase también

Documentación de C++ para if statement