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