[tab name=’♣ Exercice langage C’]
Quelles erreurs ont été commises dans chacun des groupes d’instructions suivants :
1)
if (a<b) printf ("ascendant") else printf ("non ascendant") ;
2)
int n ; ... switch (2*n+1) { case 1 : printf ("petit") ; case n : printf ("moyen") ; }
3)
#define LIMITE 100 int n ; ... switch (n) { case LIMITE-1 : printf ("un peu moins") ; case LIMITE : printf ("juste") ; case LIMITE+1 : printf ("un peu plus") ; }
4)
const int LIMITE=100 int n ;
[/tab][tab name=’Correction’]
1) Il manque un point-virgule à la fin du premier printf :
if (a<b) printf= » » (« ascendant »)= » » ;<= » » p= » »>
else printf (« non ascendant ») ;
2) Les valeurs suivant le mot case doivent obligatoirement être des « expressions constantes », c’est-à-dire des expressions calculables par le compilateur lui-même. Ce n’est pas le cas de n.
3) Aucune erreur, les expressions telles que LIMITE-1 étant bien des expressions constantes.
4) Ici, les expressions suivant le mot case ne sont plus des expressions constantes, car le symbole LIMITE a été défini sous forme d’une « constante symbolique » (en C++, cependant, ces instructions seront correctes).
Exercice informatique, Correction exercice, Télécharger Exercice, Solution exercice, Exercice langage C
[/tab][end_tabset skin= »lightness » ]