Bases de la programmation en C
int a = 7, b = 2;
double x = a / b;
double y = (double)a / b;
printf("%.1f %.1f\n", x, y);Quelle est la sortie obtenue en exécutant le code ci-dessus, qui contient une division entre entiers ?
- A3.0 3.0
- B3.0 3.5
- C3.5 3.5
Afficher la réponse et l'explication
Réponse : B. 3.0 3.5
a / b divise un int par un int : c'est donc une division entre entiers, qui donne 3 en supprimant la partie fractionnaire. Placer ce 3 dans le double x donne seulement 3,0 ; le 0,5 supprimé ne revient pas. Pour y, a est d'abord converti en double (conversion explicite, ou cast), si bien que b est lui aussi converti en double, et la division se fait en virgule flottante : le résultat est 3,5. La manière de calculer dépend du type des opérandes, et non du type de la destination de l'affectation.
Continuer : 9 autres questions sur Bases de la programmation en C