English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, imparerai l'istruzione if nel linguaggio C con l'aiuto di esempi (inclusi if ... else e if..else annidati).
La sintassi di questa istruzione in C è:
if (test expression) { //Esegui le istruzioni quando l'espressione di test è vera }
L'istruzione if valuta l'espressione di test tra parentesi quadre ().
Se il risultato del calcolo dell'espressione di test è true, esegue le istruzioni nel blocco principale dell'istruzione if.
Se il risultato del calcolo dell'espressione di test è false, l'istruzione if non esegue le istruzioni nel blocco principale.
Per ulteriori informazioni su quando l'espressione di test viene valutata come true (valore non zero) e false (0), controllarelazionaleoperatoreeOperatore logico.
// Il programma visualizza un numero se è negativo #include <stdio.h> int main() { int number; printf("Inserisci un intero: "); scanf("%d", &number); // Se il numero è minore di 0, è true if (number < 0) { printf("Hai inserito %d.\n", number); } printf("L'istruzione if è semplice."); return 0; }
Output 1
Inserisci un intero: -25 Hai inserito -25. L'istruzione if è semplice.
Quando l'utente inserisce -25, il risultato del calcolo dell'espressione number<0 viene valutato come true. Pertanto,Hai inserito -25 Verrà visualizzato sullo schermo.
Output 2
Inserisci un intero: 5 L'istruzione if è semplice.
Quando l'utente inserisce 5, il risultato del calcolo dell'espressione number<0 è false e l'istruzione if non esegue le istruzioni nel blocco principale.
L'istruzione if può avere un blocco else opzionale. La sintassi dell'istruzione if..else è:
if (test expression) { // Se l'espressione di test è vera, esegui le istruzioni } else { // Se l'espressione di test è falsa, esegui le istruzioni }
Se il risultato del calcolo dell'espressione di test è true,
Le istruzioni nel blocco if vengono eseguite.
Le istruzioni nel blocco else vengono saltate dall'esecuzione, ossia non vengono eseguite le istruzioni nel blocco else.
Se il valore dell'espressione di test è false,
Le istruzioni nel blocco else vengono eseguite
Le istruzioni nel blocco if vengono saltate, ossia non eseguite.
// Controlla se un numero intero è dispari o pari #include <stdio.h> int main() { int number; printf("Inserisci un intero: "); scanf("%d", &number); // Se il resto è 0, è true if (number%2 == 0) { printf("%d è un numero pari.", number); } else { printf("%d è un numero dispari.", number); } return 0; }
Risultato di output
Inserisci un intero: 23 23 è un numero dispari.
Quando l'utente inserisce 23, (espressione di test) il risultato dell'evaluazione dell'espressione number%2==0 è false. Pertanto, verranno eseguite le istruzioni del blocco else.
L'istruzione if...else esegue due diversi块 di codice in base al valore di true o false dell'espressione di test (test expression). È adatto quando è necessario fare una scelta tra più possibilità.
if...else if...else ti permette di controllare tra più espressioni di test e eseguire diverse istruzioni.
if (test_expression1) { // Istruzione } else if (test_expression2) { // Istruzione } else if (test_expression3) { // Istruzione } . . else { // Istruzione }
// Il programma utilizza i simboli =, > o < per confrontare due interi #include <stdio.h> int main() { int number1, number2; printf("Inserisci due interi: "); scanf("%d %d", &number1, &number2); // Controllare se due interi sono uguali if (number1 == number2) { printf("Risultato: %d = %d", number1, number2); } // Controllare se number1 è maggiore di number2. else if (number1 > number2) { printf("Risultato: %d > %d", number1, number2); } // Se entrambe le espressioni di test sopra sono false, eseguire la seguente istruzione else { printf("Risultato: %d < %d", number1, number2); } return 0; }
Risultato di output
Inserisci due interi: 12 23 Risultato: 12 < 23
È possibile includere un'altra istruzione if...else nel corpo di un'altra istruzione if...else.
Il programma di seguito fornisce un esempio di utilizzo di una qualsiasi struttura if...else che coinvolge due interi <, > e =, ma useremo istruzioni if...else annidate per risolvere il problema.
#include <stdio.h> int main() { int number1, number2; printf("Inserisci due interi: "); scanf("%d %d", &number1, &number2); if (number1 >= number2) { if (number1 == number2) { printf("Risultato: %d = %d", number1, number2); } else { printf("Risultato: %d > %d", number1, number2); } } else { printf("Risultato: %d < %d", number1, number2); } return 0; }
Se il corpo di un'istruzione if...else contiene solo una singola istruzione, non è necessario utilizzare parentesi graffe {}.
Ad esempio, il seguente codice
if (a > b) { print("Hello"); } print("Hi");
Uguale a
if (a > b) print("Hello"); print("Hi");