informatique (MP2I/MPI) · Chapitre 1 · Application directe du cours
Lire un type
Le langage C · niveau 2
Énoncé
Que valent a, b, c et d après ces quatre lignes ? Justifier chaque réponse.
int a = 7 / 2;
double b = 7 / 2;
double c = 7.0 / 2;
int d = -7 / 2;Corrigé
avaut : les deux opérandes sont entiers, la division est entière.bvaut — et non . La division est faite avant l'affectation : est calculé en entiers, donne , et ce est ensuite converti endouble. Le type de la variable receveuse n'influence pas le calcul.cvaut : dès qu'un opérande est flottant, l'autre est converti et la division est réelle.dvaut : en C99, la division entière tronque vers zéro, pas vers .
La deuxième ligne est le piège : on croit demander une division réelle, on obtient une division entière déguisée. Pour l'éviter, on écrit 7.0 / 2 ou (double) 7 / 2.
Exercices semblables
- Un dépassement qui ne dit rien corrigé
- Passage par valeur corrigé
- La taille d'une chaîne corrigé
- Lire une déclaration corrigé
- Problème — Une chaîne sûre corrigé