2010-06-24 3 views

ответ

33

Это зависит от языка, но в языках программирования типа % такая же, как precedence* и /. Это означает, что если он появляется в том же выражении (без круглых скобок), порядок зависит от associativity. В этом случае % обычно лево-ассоциативный, поэтому операторы будут выполняться в порядке слева направо.

+0

a% b == ((a/b) -floor (a/b)) * b // Использует комбинацию функций умножения, деления, вычитания и полу: o –

5

По крайней мере, на C++ и Java, modulo (%) имеет тот же уровень приоритета, что и умножение и деление.

С %, / и * (обычно) лево-ассоциативные, они оцениваются слева направо.

(спасибо Марку за указание operator associativity)

+2

'При отсутствии скобок, операторов одного и того же уровня старшинства просто оценивается слева направо. Не всегда. См. Ассоциативность операторов: http://en.wikipedia.org/wiki/Operator_associativity –

0

Оператор по модулю%, используемый во многих языках программирования компьютера, не является распространенным явлением в чистой математике. Поэтому речь идет скорее о том, как оператор обрабатывается на языках программирования, и это различается между разными языками.

6

Если речь идет о языках программирования, то да,% имеет тот же порядок, как * и/

См this table.

+2

Приятно знать, что большинство языков имеют тенденцию следовать одному и тому же стандарту. – Mau

+0

Я бы спустил, если мог. Ссылка может сработать в любое время по прихоти редакторов/модераторов wikipedia. Мехер лучше. –

0

Для C++ он имеет тот же приоритет, что и умножение и деление. Возьмите их, когда они придут, слева направо.

15

Относительные уровни приоритета операторов, найденных во многих языках C-типа являются следующие:

table

Wikipedia - Order of Operations

Смежные вопросы