mais
2.0 + 3 / 2 n'est pas une seule expression, mais deux:
2.0 + expr et
3 / 2.
Une expression est définie dans la grammaire par:
- une constante
- une variable
- un appel de fonction
- unary expression (unary étant !, ~, -, +, *, &, sizeof)
- expression binary expression (binary étant entre autre =, <, +, -, *, /, %, !=, ., ",", :: etc)
- (expression)
- expression [ expression ]
- expression ? expression : expression
Chaque expression possède un type de valeur, inféré depuis celui des opérandes impliqués.
Pour des types primitifs, a + b est du premier type capable de contenir a et b. Le mécanisme utilisé est double: la promotion entière (char et int donne int) et la promotion flottant (si un float ou double, résultat float ou double)
Par exemple deux ints donnent un int, un char et un long donnent un long, tandis qu'un int et un double donneront un double.
Pour s'en souvenir, on a
en gros char < short < int < long < float < double
Partager