【2018年答】
有三个operand的,都可以叫ternary operator。只不过在大多数编程语言里,? : 是唯一的三元运算符,所以很多时候讲三元运算就是指 ? : 了。
? : 的正式名称通常是 conditional operator(条件运算符)。
其他三元运算,维基百科给了一个例子:SQL 当中的 between。三元倒是三元,不过我们通常不把它视作运算符……
【2021年3月更新】
wikipedia又加了个OCaml的例子:a.[b]<-c
,但这就好像说 a.b = c
是三元……它是可以理解为三元,但大多数情况下程序员(以及语言规范)将其理解(及解释)为 a.b
是一个左值,然后 =
是一个二元赋值算符。
另外一个例子是乘积累加,即 a += b * c
,硬件层面可以是一个操作(以获得更准确的浮点运算结果)。然而程序员看来这是两个二元算符的组合,只是编译器在一些条件下可以自动转成一个三元指令。
再补充一个,我给JavaScript提了一个新提案 Extensions,有两种形式:二元形式A::B
和三元形式A::B:C
。见这个 Slide 和提案仓库 tc39/proposal-extensions 。