研究语言中的问号。我在堆栈上发现了这个问题:问号在 C# 中是什么意思?
关于这个问题的评论是:
- 好吧,它是一个三元运算符:'( – Alexey Shimansky 2016 年 7 月 9 日 14:25
-三元是具有三个操作数的任何运算符。有问题的运算符称为“条件运算符”。– 弗拉德 2016 年 7 月 9 日在 17:58
我很困惑。网上到处都是类似的设计叫刺
- https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Conditional_Operator
- https://www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary
- 等等
请解释为什么最开始指示的运算符是有条件的而不是三元的?条件运算符的定义是什么?那么它和三元有什么区别呢?三元的真正定义是什么,它是什么样子的呢?
这是一个三元条件运算符。无需对比 - 这个运算符有两个属性 - 它既是条件的又是三元的。
按功能,运算符是
?
有条件的(如if, switch
)按操作数的数量 - 三元(也有二元和一元)
你的假设
оператор - условный, а не тернарный
是没有根据的。VladD 并没有声称该运算符不是三元运算符,他只是澄清这不是它的唯一特征(即可能存在其他三元运算符)。如果在手指上 - 有几种蔬菜,其中一种 - 茄子 - 是蓝色的。他既是植物人(主要属性)又是蓝色(次要属性)。蓝色水果很少见,所以有时你可以说“蓝色”——它会很清楚。
三元运算符之所以如此命名,是因为它对三个操作数进行运算。三元运算符是有条件的,因为程序执行/变量值/返回值取决于条件,比如 if / switch even while / for。有几个条件运算符。三元也不例外,因为它基于布尔表达式。条件运算符是一种抽象。
运算符
?:
为分支提供了快捷方式(替代方法)if/else
。当变量的值取决于条件时,应该使用它。例如int x = (var > 2) ? 1 : 0
. 检查它是否var
超过2?然后我们将值分配给问号 (1) 之后的变量,否则 - 0。另一个例子 -return (guessed == ok) ? true : false;
但你不应该使用它,因为它会使代码难以理解。例如,在三元运算符的帮助下,您可以将值分配给具有属性的变量
const
,而使用常规属性则无法做到这一点if/else
。