Арность оператора определяется количеством операндов / аргументов. Есть унарные операторы, которые принимают один операнд, например i++
(постинкремент), бинарные операторы, такие как a + b
, которые принимают два аргумента, и есть тернарный оператор a ? b : c
, который принимает три операнда.
Операнды могут использовать одну и ту же переменную или выражение. Например, в выражении a + a
оператор +
по-прежнему является оператором двоичного , который принимает два аргумента - он просто принимает один и тот же аргумент дважды.
m = <expression>
- это назначение. Оператор присваивания также является бинарным оператором, который принимает два аргумента. С левой стороны у вас есть цель присваивания, которой в вашем случае является переменная m
, а с правой стороны у вас есть (сложное) выражение, которое дает значение.
Это оставляет вас с (a > b) ? a : b
. Есть еще три операнда - условное выражение (a > b)
, a
- это истинное выражение , а b
- ложное выражение .
Этот оператор определен в §15.25 JLS :
Условный оператор имеет три выражения операнда . ?
появляется между первым и вторым выражениями, а :
появляется между вторым и третьим выражениями.
(Выделите мое).