Adloun

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é

  • a vaut : les deux opérandes sont entiers, la division est entière.
  • b vaut — et non . La division est faite avant l'affectation : est calculé en entiers, donne , et ce est ensuite converti en double. Le type de la variable receveuse n'influence pas le calcul.
  • c vaut : dès qu'un opérande est flottant, l'autre est converti et la division est réelle.
  • d vaut : 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

Le cours du chapitre · Tous les exercices du chapitre