Remarque sur la sémantique

On a la certitude que expression$_2$ ne sera pas évaluée si expression$_1$ rend la valeur faux. Ceci présente un intérêt dans certains cas de parcours de tableau ou de liste de blocs chaînés. Par exemple dans le cas d'un parcours de tableau à la recherche d'un élément ayant une valeur particulière, supposons que l'on utilise comme test de fin de boucle l'expression

i < n && t[i] != 234
(on boucle tant que ce test est vrai), où i < n est le test permettant de ne pas déborder du tableau, et t[i] != 234 est le test de l'élément recherché. S'il n'existe dans le tableau aucun élément égal à 234, il va arriver un moment où on va évaluer i < n && t[i] != 234 avec i = n. La sémantique de l'opérateur && assurant que l'expression t[i] != 234 ne sera pas évaluée, on ne court donc pas le risque d'avoir une erreur matérielle (t[n] peut référencer une adresse mémoire invalide).



Matthieu Moy 2017-02-08