2010-06-24 9 views

Respuesta

33

Esto depende de la lengua, pero en idiomas estilo C % es el mismo precedence como * y /. Esto significa que si aparece en la misma expresión (sin paréntesis) el orden depende de associativity. En este caso, % suele asociarse por la izquierda, por lo que los operadores se ejecutarán en orden de izquierda a derecha.

+0

a% b == ((a/b) -floor (a/b)) * b // Utiliza una combinación de multiplicación, división, resta y función de piso: o –

5

Al menos en C++ y Java, el módulo (%) tiene el mismo nivel de precedencia que la multiplicación y la división.

Dado que %, / y * son (generalmente) asociativos a la izquierda, se evalúan de izquierda a derecha.

(Gracias a Mark por señalar operator associativity)

+2

'En ausencia de paréntesis, los operadores del mismo nivel de precedencia son simplemente evaluado de izquierda a derecha. No siempre. Consulte Asociatividad del operador: http://en.wikipedia.org/wiki/Operator_associativity –

0

El operador módulo%, tal como se utiliza en muchos lenguajes de programación, no es común en las matemáticas puras. Por lo tanto, se trata más bien de cómo se trata al operador en los lenguajes de programación, y esto difiere entre diferentes lenguajes.

6

Si su pregunta es acerca de los lenguajes de programación, entonces sí,% tiene el mismo orden que * y/

Ver this table.

+2

Es bueno saber que la mayoría de los idiomas tienden a seguir el mismo estándar. – Mau

+0

Yo hubiera votado negativamente si pudiera. El enlace podría pudrirse en cualquier momento según el capricho de los editores/moderadores de wikipedia. Meher es mucho mejor. –

0

Para C++ tiene la misma precedencia que la multiplicación y la división. Tómalos como vienen, de izquierda a derecha.

15

Los niveles de precedencia relativas de los operadores que se encuentran en muchos idiomas de estilo C son los siguientes:

table

Wikipedia - Order of Operations

Cuestiones relacionadas