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 luiif, iar blocul de după rulează mereu. - Scrii
if (x = 0)în loc deif (x == 0). Atribuirea dă 0, deci ramura nu rulează niciodată. - Compari șiruri cu
==:if (nume == "Ana")compară adrese. Foloseștestrcmp(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.
Întrebări & Exemple de Cod:
if / elseAi o nelămurire despre utilizarea comenzii
if / elsesau 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.