2010-09-01 16 views

Respuesta

31

resto de 3/7 es 3..since se fue 0 veces con 3 resto tan 3% 7 = 3

+2

gracias por esto, perturbó mi baño: D –

6

la misma manera. El cociente es 0 (3/7 con parte fraccional descartada). El resto satisface:

(a/b) * b + (a % b) = a 
(3/7) * 7 + (3 % 7) = 3 
0 * 7 + (3 % 7) = 3 
(3 % 7) = 3 

Esto se define en C99 §6.5.5, Operadores multiplicativos.

5

7 entra en 3? cero veces con 3 sobrantes.

cociente es cero. El resto (módulo) es 3.

1

(7 * 0) + 3 = 3; por lo tanto, el resto es 3.

1

a% q = r significa que hay una x para que q * x + r = a.

Así, el 7% 3 = 1, ya que 3 * 2 + 1 = 7,

y el 3% 7 = 3, ya que 7 * 0 + 3 = 3

2

Mientras que ambos son positivos , el resto será igual al dividendo. Si uno o ambos son negativos, entonces se le recuerda que % es realmente el operador restante, no el operador de módulo. Un módulo siempre será positivo, pero un resto puede ser negativo.

+0

Un módulo puede ser negativo. Puedes elegir _any_ coset representativo. – aaronasterling

+3

Algebraicamente, el resto siempre es positivo. C es simplemente incorrecto en este sentido, y es una fuente interminable de problemas.:-( –

+2

Independientemente de si prefiere definir sus términos, '%' (como se define en C y C++) puede producir un resultado negativo, lo que mucha gente no espera. –

4
  • 7 dividido por 3 es 2 con un resto de 1

  • 3 dividido por 7 es 0 con un resto de 3

0

Conceptualmente, yo creo que de esta manera. Por definición, el dividendo debe ser igual a (quotient * divisor) + modulus

O, la solución para el módulo: modulus = dividend - (quotient * divisor)

Cada vez que el dividendo es menor que el divisor, el cociente es siempre cero, lo que resulta en el módulo simplemente ser igual al dividendo .

Para ilustrar con los valores de OP:

modulus of 3 and 7 = 3 - (0 * 7) = 3 

Para ilustrar con otros valores:

1 % 3: 
1 - (0 * 3) = 1 

2 % 3: 
2 - (0 * 3) = 2 
Cuestiones relacionadas