Bonjour,
si on a:
pourquoi l'expression (int) i %d est erronée ?Code:
1
2
3 int i; double d;
i%d sera de type double et avec (int), il y aura troncature du résultat pour ne garder que la partie entière (?)
Merci.
Version imprimable
Bonjour,
si on a:
pourquoi l'expression (int) i %d est erronée ?Code:
1
2
3 int i; double d;
i%d sera de type double et avec (int), il y aura troncature du résultat pour ne garder que la partie entière (?)
Merci.
teuteuteu : un modulo par rapport à un double ?
aaahhhh ok
Merci!
Et le (int) signifie qu'il faut prendre la partie entière dans : (int) (1/3) par exemple ?
Bonsoir,
En fait, ça dépend de tes opérandes. Si elles sont de type (à l'issue des conversions arithmétiques usuelles, évidemment) int, tu auras une division entière. Si elles sont de type double, tu auras une division flottante. Ici, le transtypage s'effectue *à la fin* de l'opération, et n'aura pas d'influence sur le type de division qui sera effectué. Si tu veux que ce soit le cas, il faut que tu transtypes les opérandes.
Bonne soirée.
Bonjour
Petite précision: le calcul se fait dans la précision des opérandes utilisés par le calcul immédiat et non pas dans la précision de l'opération globale.
Exemple: double d=5/2 + 1.0
Le premier calcul fait d'après la priorité des opérateurs étant 5/2 n'utilise que des entiers et se fera donc dans le type entier et donnera 2. Ensuite, ce 2 sera ajouté au double 1.0 et donnera 3.0.
Alors que cet exemple: double d=5/2.0 + 1 donnera 2.5 + 1 soit 3.5...