Exercice langage C: Types de Valeurs
Enoncé de l'exercice:
Soient les déclarations :
char c = '\x05' ;
int n = 5 ;
long p = 1000 ;
float x = 1.25 ;
double z = 5.5 ;
Quels sont le type et la valeur de chacune des expressions suivantes :
n + c + p /* 1 */
2 * x + c /* 2 */
(char) n + c /* 3 */
(float) z + n / 2 /* 4 */
1) c est tout d'abord converti en int, avant d'être ajouté à n.
Le résultat (10), de type int, est alors converti en long, avant d'être ajouté à p.
On obtient finalement la valeur 1010, de type long.
2) On évalue d'abord la valeur de 2*x, en convertissant 2 (int) en float, ce qui fournit la valeur 2.5 (de type float).
Par ailleurs, c est converti en int (conversion systématique).
On évalue ensuite la valeur de 2*x, en convertissant 2 (int) en float, ce qui fournit la valeur 2.5 (de type float).
Pour effectuer l'addition, on convertit alors la valeur entière 5 (c) en float, avant de l'ajouter au résultat précédent.
On obtient finalement la valeur 7.75, de type floa