Vous êtes sur la page 1sur 4

Programmation C/Tests

1
Programmation C/ Tests
Les tests permettent d'effectuer des oprations diffrentes suivant qu'une condition est vrifie ou non.
Test if
Syntaxe
if (condition)
instructions
else
autre instructions
Si la condition est vrifie, alors on excute le bloc d'instructions, sinon on excute lautre bloc. La clause else' est
facultative, qui plus est, une clause else se rfre toujours la dernire instruction if rencontre. Considrez le code,
mal indent, suivant :
/* Ce code est volontairement indent de manire ambigu */
if (condition)
if (autre_condition) /* ... */ ;
else
/* ... */ ;
Dans ce dernier exemple la clause else se rapportait bien-sr au second if selon la rgle nonce ci-dessus. Un bon
compilateur devrait vous avertir que cette construction est ambigu, et que vous devriez la rcrire :
if (condition)
{
if (autre_condition) /* ... */ ;
}
else /* ... */ ;
D'ailleurs, lorsqu'un if contient une instruction (for, do, while, switch, goto, return, etc.) il est conseill de
la mettre entre accolades.
Test switch
Cette instruction permet de tester si une expression concide avec un certain nombre de constantes, et d'excuter une
action par dfaut dans le cas o aucune valeur ne correspond celle de l'expression. Cela permet un traitement
beaucoup plus efficace et lisible qu'une succession de if/else imbriqus. Insistons sur le terme constante: il est
en effet impossible d'utiliser des expressions dont la valeur n'est pas connue la compilation (c'est dire de variable
dans les instructions case).
Syntaxe
switch (expression)
{
case valeur1:
bloc1
case valeur2:
bloc2
Programmation C/Tests
2
/*...*/
case valeurN:
blocN
default:
blocD
}
Compare la valeur de l'expression celles de valeur1, valeur2, ..., valeurN. En cas d'galit entre expression et
valeurI les blocs sont excuts squentiellement partir de blocI, et ce jusqu' la fin de l'instruction switch. Si
expression est gale valeur2, dans cet exemple, les blocs bloc2 blocN et mme blocD seront excuts. Pour
empcher ce comportement on utilise l'instruction break, que l'on peut placer n'importe quel endroit pour sortir
(aller la fin) de l'instruction switch. En gnral, on retrouve plus frquemment l'instruction switch crite de la sorte
:
switch (expression)
{
case valeur1:
bloc1
break;
case valeur2:
bloc2
break;
/*...*/
case valeurN:
blocN
/* pas de break; */
default:
blocD
}
C'est en fait tellement rare de ne pas mettre de break entre les diffrents cas, qu'il est conseill de mettre un
commentaire pour les cas o cette instruction est dlibrment omise, a permet de bien signaler au lecteur qu'il ne
s'agit pas d'un oubli.
Expression conditionnelle
condition ? expression_si_vrai : expression_si_faux ;
Exemple
#include <stdio.h>
int main(int argc, char * argv[])
{
printf("%s\n", argc < 2 ? "Vous n'avez pas donn d'argument." : "Vous avez donn au moins un argument.");
return 0;
}
Ce mini-programme teste si le nombre d'arguments pass main est infrieur 2 avec l'expression argc < 2 et
renvoie "vous n'avez pas donn d'argument" si l'expression est vraie et "vous avez donn au
Programmation C/Tests
3
moins un argument" sinon. Le rsultat de l'valuation est alors pass la fonction printf qui affiche le
rsultat.
Sources et contributeurs de l'article
4
Sources et contributeurs de l'article
Programmation C/ Tests Source: http://fr.wikibooks.org/w/index.php?oldid=237726 Contributeurs: Alveric, Dhenry, Guillaumito, Tados, Tpierron, 11 modifications anonymes
Licence
Creative Commons Attribution-Share Alike 3.0 Unported
http:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/