Bonjour,

Voici un petit bout de programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
double l = (double(int(i))) / double(int(i));
Ce code compile toujours.

Maintenant, changeons le / en * :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 + :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.