if / else în C

Execută un bloc de cod doar dacă o condiție este adevărată, cu ramuri alternative pentru celelalte cazuri.

Sintaxă
if (conditie) {
    ...
} else if (alta_conditie) {
    ...
} else {
    ...
}

Ce face if / else

if evaluează condiția din paranteze. Dacă este diferită de 0, rulează blocul de după; altfel rulează blocul else, dacă există. Cu else if legi mai multe condiții: prima adevărată câștigă, iar restul nu mai sunt verificate.

Acoladele sunt opționale când blocul are o singură instrucțiune, dar este mai sigur să le pui mereu: dacă adaugi mai târziu o a doua linie, ea ar rula altfel indiferent de condiție.

Un else se leagă de cel mai apropiat if fără else. Acoladele clarifică intenția.

Exemple

Exemplul 1: Calificativ după notă

#include <stdio.h>

int main(void) {
    int note[] = {10, 8, 6, 4};
    for (int i = 0; i < 4; i++) {
        int n = note[i];
        if (n >= 9) {
            printf("%d: Foarte bine\n", n);
        } else if (n >= 7) {
            printf("%d: Bine\n", n);
        } else if (n >= 5) {
            printf("%d: Suficient\n", n);
        } else {
            printf("%d: Insuficient\n", n);
        }
    }
    return 0;
}

Rezultat

10: Foarte bine
8: Bine
6: Suficient
4: Insuficient

Exemplul 2: Condiție citită de la tastatură

Programul citește vârsta cu scanf. Verifică și dacă citirea a reușit (scanf returnează câte valori a citit).

#include <stdio.h>

int main(void) {
    int varsta;
    printf("Vârsta: ");
    if (scanf("%d", &varsta) != 1) {
        printf("Nu ai scris un număr.\n");
        return 0;
    }
    if (varsta >= 18) {
        printf("\nPoți vota.\n");
    } else {
        printf("\nMai ai %d ani până poți vota.\n", 18 - varsta);
    }
    return 0;
}

Ce scrie utilizatorul (intrare)

16

Rezultat

Vârsta: 
Mai ai 2 ani până poți vota.

Exemplul 3: Orice valoare diferită de 0 este adevărată

Condiția poate fi direct un număr sau un pointer: if (stoc) înseamnă if (stoc != 0).

#include <stdio.h>

int main(void) {
    int stoc = 3;
    const char *nume = nullptr;
    if (stoc) {
        printf("Mai sunt %d bucăți\n", stoc);
    }
    if (!nume) {
        printf("Numele lipsește\n");
    }
    return 0;
}

Rezultat

Mai sunt 3 bucăți
Numele lipsește

Greșeli frecvente

  • Pui punct și virgulă după condiție: if (x > 0);. Instrucțiunea goală devine corpul lui if, iar blocul de după rulează mereu.
  • Scrii if (x = 0) în loc de if (x == 0). Atribuirea dă 0, deci ramura nu rulează niciodată.
  • Compari șiruri cu ==: if (nume == "Ana") compară adrese. Folosește strcmp(nume, "Ana") == 0.

Comenzi înrudite

  • switch: Alege una din mai multe ramuri după valoarea unui întreg, cu etichete case; fără break, execuția continuă în ramura următoare.
  • Operatori de comparație și logici (== && || ! ?:): Compară valori și combină condiții: rezultatul este 1 (adevărat) sau 0 (fals); && și || se opresc cât mai devreme.
  • bool, true, false: Tipul pentru valori adevărat/fals. În C23, bool, true și false sunt cuvinte cheie, fără să mai incluzi stdbool.h.
  • strcmp și strncmp: Compară două șiruri caracter cu caracter și spune dacă sunt egale sau care vine primul.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: if / else

Ai o nelămurire despre utilizarea comenzii if / else sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.