Compilateurs
En appliquant de façon répétée la propagation et le repliement de constantes au code ci-dessus, quel code obtient-on finalement ?
int n = 8;
int m = n * 2;
return m + 1;
- Areturn n * 2 + 1;
- Breturn 8 * 2 + m;
- Creturn 17;
Afficher la réponse et l'explication
Réponse : C. return 17;
Par propagation de constantes, n valant 8 et n'étant plus modifiée, ses utilisations sont remplacées par 8, d'où m = 8 * 2. Le repliement calcule 8 * 2 = 16, d'où m = 16, puis la propagation et le repliement transforment m + 1 en 16 + 1 = 17. Les affectations de n et m n'étant plus utilisées, elles sont supprimées comme code mort, et il ne reste que return 17;. Les formes arrêtées en cours de route ou issues d'un remplacement erroné ne sont pas le résultat final.