opérateur * opérateurs de multiplications
opérateur / opérateurs de divisions
opérateur % opérateur de calcul de reste (modulo)
Syntaxe:
E1 * E2 (multiplication)
E1 / E2 (division)
E1 % E2 (modulo ou reste)
Description:
Pour les opérateurs * et / Les opérandes doivent être de type arithmétique.
Les conversions arithmétiques standards sont appliquées quand les deux opérandes ne sont pas de même type:
Si un des opérandes est un réel (type double ou float) le résultat est de type réel.
E1 / E2 n'est défini que si E2 est non nul.
Si E1 et E2 sont de type entier, alors:
E1 / E2 est le quotient entier exemple : avec la déclaration int ii; ii = 4 / 7; est équivalent à ii = 0;
Attention: avec la déclaration: double dd; dd = 4 / 7; est équivalent à dd = 0; car le quotient 4 / 7 est évalué, comme dans l'exemple précédent, et fournit la valeur 0, puis cette valeur est affectée à la variable dd.
L'opérateur % doit avoir des opérandes de type entier.
Le résultat de (E1 % E2) est le reste de la division euclidienne de E1 par E2, qui n'est défini que si E2 est non nul.
Le résultat de (op1 / op2) et de (op1 % op2) sont le quotient et le reste de la division de op1 par op2, à supposer que op2 est différent de zéro.
Si vous appliquez / ou % avec un second opérande égal à zéro, une erreur apparaît (la division par zéro est impossible).
Lorsque op1 et op2 sont des entiers et que le quotient n'est pas un entier les résultats sont les suivants (notez que l'arrondi est toujours par défaut):
1. Si op1 et op2 sont de même signe op1 / op2 correspond au plus grand entier inférieur au vrai quotient et op1 % op2 prend le signe de op1.
2. Si op1 et op2 sont de signes opposés, op1 / op2 correspond au plus petit entier plus grand que le vrai quotient et op1 % op2 prend le signe de op1.
Voir aussi:
Exemple:
#include
int main(void) {
double d1, d2;
printf( " 17/ 4 = %2d reste = %2d\n", 17 / 4, 17% 4 );
printf( " 17/-4 = %2d reste = %2d\n", 17 /-4, 17%-4 );
printf( "-17/ 4 = %2d reste = %2d\n", -17 / 4, -17% 4 );
printf( "-17/-4 = %2d reste = %2d\n", -17 /-4, -17%-4 );
d1=17; d2=4; printf( " %7.2lf /%7.2lf = %12lf\n", d1, d2, d1/d2);
d1=17; d2=-4; printf( " %7.2lf /%7.2lf = %12lf\n", d1, d2, d1/d2);
d1=-17; d2=4; printf( " %7.2lf /%7.2lf = %12lf\n", d1, d2, d1/d2);
d1=-17; d2=-4; printf( " %7.2lf /%7.2lf = %12lf\n", d1, d2, d1/d2);
return 0;
}