If ... Else Instruction en C expliquée

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 ifinstructions.

La ifdé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' ifinstruction 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' ifexécution de l' instruction.

Syntaxe d'une ifinstruction

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' ifinstruction est vrai, tout ce qui se trouve entre les accolades est exécuté. Dans ce cas, prend la valeur truetrue, de sorte que le code exécute la printffonction.

if..else déclarations

Dans une if...elseinstruction, si le code entre parenthèses de l' ifinstruction est vrai, le code entre ses crochets est exécuté. Mais si l'instruction entre parenthèses est fausse, tout le code elseentre 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 truetoujours é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.hn'a pas été inclus. Ce n'est pas grave car trueet falsene 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 trueou falsedirectement.

Notez également la condition dans la parenthèse de la ifdéclaration: n == 3. Cette condition compare net 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...elsedé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...elseinstruction est imbriquée dans l' elseinstruction de la première if..else.

Si xest inférieur à 0, alors signest défini sur -1. Cependant, si elle xn'est pas inférieure à 0, la deuxième if...elseinstruction est exécutée. Là, si xest égal à 0, signest également mis à 0. Mais si xest supérieur à 0, signest à la place mis à 1.

Plutôt qu'une if...elseinstruction imbriquée , les débutants utilisent souvent une chaîne d' ifinstructions:

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...elseLes instructions sont une alternative à une chaîne d' ifinstructions. 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' ifinstruction prend la valeur false, la condition de l' else...ifinstruction est vérifiée. Si cette condition est évaluée à vrai, le code à l'intérieur else...ifdes accolades de l' instruction est exécuté.

Opérateurs de comparaison

Nom de l'opérateurUsageRésultat
Égal àa == bVrai si aest égal à b, faux sinon
Pas égal àa != bVrai si an'est pas égal à b, faux sinon
Plus grand quea > bVrai si aest supérieur à b, faux sinon
Plus grand ou égal àa >= bVrai si aest supérieur ou égal à b, faux sinon
Moins quea < bVrai si aest inférieur à b, faux sinon
Inférieur ou égal àa <= bVrai si aest 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érateurUsageRésultat
Pas ( !)!(a == 3)Vrai si an'est pas égal à 3
Et ( &&)a == 3 && b == 6Vrai si aest égal à 3 etb est égal à 6
Ou ( ||)a == 2 || b == 4True 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.