Adloun

L'ordre des conditions protège un accès

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 1 — Le langage C

Énoncé

Ces deux fonctions sont-elles équivalentes ? Si non, laquelle est correcte, et pourquoi ?


bool premier_nul_A(const int t[], int n, int i) {
    return t[i] == 0 && i < n;
}
bool premier_nul_B(const int t[], int n, int i) {
    return i < n && t[i] == 0;
}

Corrigé

Elles ne sont pas équivalentes, et seule premier_nul_B est correcte.

L'évaluation de &amp;&amp; est paresseuse : le second opérande n'est évalué que si le premier est vrai.

Règle générale : dans une conjonction, la condition qui garde vient toujours en premier. C'est un usage de la paresse comme outil de correction, et non comme optimisation.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.