instruction if

Elle comporte deux formes,

  • l’une avec partie else :

if (a<b)

min = a ;

else

min = b ;

  • et l’autre sans :

if (a<b) a = b ;

L’expression est évaluée. Si le résultat est différent de 0 (elle est considérée être une expression vraie), alors l’instruction qui suit le if est exécutée, et on n’exécute pas la partie else.

Si l’expression rend un résultat égal à 0 (l’expression est considérée être fausse), c’est l’instruction qui suit le else (si elle existe) qui est exécutée.

Les instructions if peuvent être imbriquées.

if (n>0)

printf (“n = %d est positif \n”) ;

else if (n<0)

printf (“n = %d est négatif \n”) ;

else

printf (“n est nul \n”) ;

Remarque 1. dangling if effect. Grammaire ambiguë.

Comment peut on lire l’instruction ?

if (exp-1) then if (exp-2) then inst-1 else inst-2 ;

Si on suit la grammaire, il y a deux interprétations :

if (exp-1) then INST ; avec INST : if (exp-2) then inst-1 else inst-2 ;

if (exp-1) then INST else inst-2 ; avec INST if (exp-2) then inst-1 ;

En fait, la grammaire est ambiguë. Les deux solutions existent. Mais il ya une règle du langage qui dit que c’est l’interprétation a qui est la bonne. Il y a une règle en C qui dit que la partie else se rapporte au if le plus proche (le plus à droite). Une autre façon d’exprimer la règle est de dire que la règle de grammaire comportant le else est prioritaire à celle sans else.

Remarque 2.  Cas d'utilisateion de l'opérateur conditionnel ? :

En C, il est possible dans certains cas de remplacer une instruction if par l'utilisation de l'opérateur conditionnel (exp ? exp : exp).

Exemple :

mention =

note <4 ? tres-insuffisant :

note <8 ? insuffisant :

note <12 ? passable :

note <16 ? bien :

très-bien ;

 

» Glossaire du langage C