Le flux de code conditionnel est la possibilité de modifier la façon dont un morceau de code se comporte en fonction de certaines conditions. Dans de telles situations, vous pouvez utiliser des if
instructions.
La if
déclaration est également connue sous le nom de déclaration de prise de décision, car elle prend une décision sur la base d'une condition ou d'une expression donnée. Le bloc de code à l'intérieur de l' if
instruction est exécuté si la condition est évaluée à vrai. Cependant, le code à l'intérieur des accolades est ignoré si la condition est évaluée à false et le code après l' if
exécution de l' instruction.
Syntaxe d'une if
instruction
if (testCondition) { // statements }
Un exemple simple
Regardons un exemple de cela en action:
#include #include int main(void) { if(true) { printf("Statement is True!\n"); } return 0; }
Production:
Statement is True!
Si le code entre parenthèses de l' if
instruction est vrai, tout ce qui se trouve entre les accolades est exécuté. Dans ce cas, prend la valeur true
true, de sorte que le code exécute la printf
fonction.
if..else
déclarations
Dans une if...else
instruction, si le code entre parenthèses de l' if
instruction est vrai, le code entre ses crochets est exécuté. Mais si l'instruction entre parenthèses est fausse, tout le code else
entre crochets de l' instruction est exécuté à la place.
Bien sûr, l'exemple ci-dessus n'est pas très utile dans ce cas car il est true
toujours évalué à vrai. En voici un autre qui est un peu plus pratique:
#include int main(void) { int n = 2; if(n == 3) { // comparing n with 3 printf("Statement is True!\n"); } else { // if the first condition is not true, come to this block of code printf("Statement is False!\n"); } return 0; }
Production:
Statement is False!
Il y a ici quelques différences importantes. Premièrement, stdbool.h
n'a pas été inclus. Ce n'est pas grave car true
et false
ne sont pas utilisés comme dans le premier exemple. En C, comme dans d'autres langages de programmation, vous pouvez utiliser des instructions qui évaluent à vrai ou faux plutôt que d'utiliser les valeurs booléennes true
ou false
directement.
Notez également la condition dans la parenthèse de la if
déclaration: n == 3
. Cette condition compare n
et le nombre 3. ==
est l'opérateur de comparaison, et est l'une des nombreuses opérations de comparaison en C.
Imbriqué if...else
La if...else
déclaration permet de faire un choix entre deux possibilités. Mais parfois, vous devez choisir entre trois ou plusieurs possibilités.
Par exemple, la fonction de signe en mathématiques renvoie -1 si l'argument est inférieur à zéro, +1 si l'argument est supérieur à zéro et renvoie zéro si l'argument est zéro.
Le code suivant implémente cette fonction:
if (x < 0) sign = -1; else if (x == 0) sign = 0; else sign = 1;
Comme vous pouvez le voir, une deuxième if...else
instruction est imbriquée dans l' else
instruction de la première if..else
.
Si x
est inférieur à 0, alors sign
est défini sur -1. Cependant, si elle x
n'est pas inférieure à 0, la deuxième if...else
instruction est exécutée. Là, si x
est égal à 0, sign
est également mis à 0. Mais si x
est supérieur à 0, sign
est à la place mis à 1.
Plutôt qu'une if...else
instruction imbriquée , les débutants utilisent souvent une chaîne d' if
instructions:
if (x 0) { sign = 1; }
Bien que cela fonctionne, ce n'est pas recommandé car il n'est pas clair qu'une seule des instructions d'assignation ( sign = ...
) est censée être exécutée en fonction de la valeur de x
. C'est également inefficace - chaque fois que le code s'exécute, les trois conditions sont testées, même si une ou deux ne doivent pas l'être.
else ... if instructions
if...else
Les instructions sont une alternative à une chaîne d' if
instructions. Considérer ce qui suit:
#include int main(void) { int n = 5; if(n == 5) { printf("n is equal to 5!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }
Production:
n is equal to 5!
Si la condition de l' if
instruction prend la valeur false, la condition de l' else...if
instruction est vérifiée. Si cette condition est évaluée à vrai, le code à l'intérieur else...if
des accolades de l' instruction est exécuté.
Opérateurs de comparaison
Nom de l'opérateur | Usage | Résultat |
---|---|---|
Égal à | a == b | Vrai si a est égal à b , faux sinon |
Pas égal à | a != b | Vrai si a n'est pas égal à b , faux sinon |
Plus grand que | a > b | Vrai si a est supérieur à b , faux sinon |
Plus grand ou égal à | a >= b | Vrai si a est supérieur ou égal à b , faux sinon |
Moins que | a < b | Vrai si a est inférieur à b , faux sinon |
Inférieur ou égal à | a <= b | Vrai si a est inférieur ou égal à b , faux sinon |
Opérateurs logiques
Nous pourrions vouloir qu'un peu de code s'exécute si quelque chose n'est pas vrai, ou si deux choses sont vraies. Pour cela nous avons des opérateurs logiques:
Nom de l'opérateur | Usage | Résultat |
---|---|---|
Pas ( ! ) | !(a == 3) | Vrai si a n'est pas égal à 3 |
Et ( && ) | a == 3 && b == 6 | Vrai si a est égal à 3 etb est égal à 6 |
Ou ( || ) | a == 2 || b == 4 | True if a is equal to 2 orb is equal to 4 |
For example:
#include int main(void) { int n = 5; int m = 10; if(n > m || n == 15) { printf("Either n is greater than m, or n is equal to 15\n"); } else if( n == 5 && m == 10 ) { printf("n is equal to 5 and m is equal to 10!\n"); } else if ( !(n == 6)) { printf("It is not true that n is equal to 6!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }
Output:
n is equal to 5 and m is equal to 10!
An important note about C comparisons
While we mentioned earlier that each comparison is checking if something is true or false, but that's only half true. C is very light and close to the hardware it's running on. With hardware it's easy to check if something is 0 or false, but anything else is much more difficult.
Instead it's much more accurate to say that the comparisons are really checking if something is 0 / false, or if it is any other value.
For example, his if statement is true and valid:
if(12452) { printf("This is true!\n") }
By design, 0 is false, and by convention, 1 is true. In fact, here’s a look at the stdbool.h
library:
#define false 0 #define true 1
While there's a bit more to it, this is the core of how booleans work and how the library operates. These two lines instruct the compiler to replace the word false
with 0, and true
with 1.