Bonjour,
Voici un petit bout de programme :
1 2
| int i = 5;
double l = double(int(i)) / double(int(i)); |
Ce code compile parfaitement (avec gcc 4.6.3).
Ajoutons des parenthèses :
double l = (double(int(i))) / double(int(i));
Ce code compile toujours.
Maintenant, changeons le / en * :
double l = (double(int(i))) * double(int(i));
Cette fois, on obtient une erreur :
error: invalid type argument of unary '*' (have 'double')
Changeons le * en + :
double l = (double(int(i))) + double(int(i));
On obtient une autre erreur :
error: invalid cast to function type 'double(int)'
Si on enlève les parenthèses :
double l = double(int(i)) + double(int(i));
Alors le code compile (et c'est vrai aussi avec le *).
J'avoue que je ne comprends pas la différence entre l'expression double(int(i)) sans parenthèse, et (double(int(i))) avec parenthèses.
Quelqu'un peut-il mexpliquer ?
Merci d'avance.
Partager