Le langage C - conditions

Lorsque l'on veut réaliser une opération (ou une suite d'opérations) seulement à une certaine condition, on utilise la structure if (condition) instructions. Par exemple, pour calculer la valeur absolue d'une variable entière v, on écrira

if (v < 0) {
    v = -v ;
}

Ainsi, si v est négatif, il est remplacé par son opposé.

La syntaxe générale est

if (condition) {
    instructions à exécuter si condition est vraie;
} else {
    instructions à exécuter sinon;
}

Pour des raisons de clarté, il est utile de décaler tout le bloc à exécuter par rapport au reste.

Les tests sont réalisés avec les opérateurs de comparaison (on ne compare que des variables du même type !) :

inférieur strictement <
inférieur ou égal <=
égal ==
différent !=
supérieur strictement >
supérieur ou égal >=

Il faut bien prendre garde au test d'égalité qui s'écrit avec deux signes ==, un seul signe = étant une affectation à une variable. Par exemple, si on écrit (la variable i étant de type entière (int))

if (i = 2) {
    ...
}

on ne provoque pas d'erreur du compilateur (car cela a un sens), mais cela a pour conséquence d'affecter la valeur 2 à la variable i et de regarder ensuite la valeur logique de l'expression. Dans ce cas, sa valeur logique est 2, donc non nulle, ce qui signifie que la condition est réalisée. Finalement, quelque soit la valeur de i avant le test, le bloc d'instructions est toujours exécuté avec i ayant une valeur égale à 2 !

L'écriture correcte du test doit bien être

if (i == 2) {
    ...
}

Vu qu'il est très facile de faire cette erreur même avec beaucoup d'expérience, le compilateur vous prévient si vous avez pensé à lui demander des conseils avec l'option -Wall. Pensez y donc systématiquement!

Il est également possible de faire plusieurs tests simultanés avec les opérateurs "booléens" (ou, et ...). Par exemple si on veut satisfaire deux conditions simultanées: "si (condition1 et condition2) alors ..." s'écrit

if ((condition1) && (condition2)) {
    ...
}

S'il suffit qu'au moins une de deux conditions soit satisfaite: "si (condition1 ou condition2) alors ..." s'écrit:

if ((condition1) || (condition2)) {
    ...
}

Enchaînement de conditions

On peut enchaîner plusieurs test consécutivement à l'aide de else if:

if (condition1) {
  instructions si condition 1 vraie;
} else if (condition2) {
  instructions si condition 2 vraie;
} else if (condition3) {
  instructions si condition 3 vraie;

[...etc...]

} else {
  instructions si aucune condition n'était vraie;
}

Dans ce cas, dès qu'une des conditions est réalisée, le bloc d'instructions associé est exécuté et les tests suivants ne sont pas réalisés (à cause des else).

Auteur(s) : Anciens, A. Daerr. Dernière modification : Wed Nov 22 01:08:55 2006. [valid. XHTML]