这段代码构造的名称是什么:condition ? true_expression: false_expression

6
以下建筑物的正确术语/名称是什么:
string myString = (boolValue==true ? "true": "false");

4
维基百科恢复后,您可以参考http://en.wikipedia.org/wiki/%3F:这是一个专门介绍该运算符的页面。 - Peter Lawrey
9个回答

15

这是一个三元条件表达式。


10

C、C++、C#和Java标准都使用以下术语:

  • 运算符被称为条件运算符
  • 这种表达式是一个条件表达式

这些都是官方名称。程序员通常更松散地将其称为三元运算符,因为它是唯一常用的具有3个操作数的运算符。严格来说,它只是一种三元运算符。


6

?: 运算符是 "条件运算符"。

boolValue==true ? "true": "false" 是一个条件表达式。

myString = (boolValue==true ? "true": "false") 是一个带有赋值的条件表达式。

string myString = (boolValue==true ? "true": "false"); 是一个语句,它在声明和赋值中使用了一个条件表达式。

?: 通常被称为 "三目运算符"。严格来说,它只是 一种 三元运算符,但由于它是这些语言中唯一的三元运算符,所以将其称为 the 三元运算符是有效的,尽管它基于一个与其自身内部定义无关的事实而应用标签。如果我们向像 x § y ¶ z 这样的语言添加一个运算符,该运算符将 xyz 作为操作数,则它也将是一个三元运算符,虽然条件运算符仍然是 一种 三元运算符,但它不再是 the 三元运算符。


5
这被称为“三元条件运算符”。虽然我不知道使用它的表达式是否有特定的名称。希望这可以帮到你!

1
根据所有标准,它们确实有一个特定的名称,操作符也有一个特定的名称——条件运算符。 - David Heffernan
@DavidHeffernan:顺便说一下,在C++和C社区中,“三元运算符”是常见的拼写方式,因为只有一个三元运算符。 - Sebastian Mach
@DavidHeffernan:哎呀,不好意思我不小心忽略了你的回答。我又添加了一个答案,因为我可以想象有些程序员不知道一元、二元和三元(或n元)之间的关系。 - Sebastian Mach

2

我不确定这个术语在C#社区是否常用,但在C和C++中,许多人通常将其称为三元运算符。为什么?

  • 有一元运算符需要一个操作数,例如-x
  • 有二元运算符需要两个操作数,例如x+x
  • 只有一个三元运算符需要三个操作数,例如x?y:z

“正确”的名称是“条件运算符”,因为结果取决于条件(最左边的操作数)。


1

我认为它被称为“三元运算符”。


1

这是一个条件表达式,但当你使用“?”时,它被称为“条件运算符”。


这不是一个语句,而是一个表达式! - Basile Starynkevitch
@BasileStarynkevitch 这是一个语句,尽管其中包含一个表达式。 - Jon Hanna
我不这么认为。在C和C++中,语句和表达式在语法和语义上是不同的(实际上,表达式 - 像赋值一样 - 是一个简单的指令)。 - Basile Starynkevitch
@BasileStarynkevitch 他们确实不同。myString = (boolValue==true ? "true": "false") 是一个表达式,string myString = (boolValue==true ? "true": "false"); 是一个语句。 - Jon Hanna

1

这是一个条件表达式

为了可读性,将复杂的条件放在括号中:

string myString = (somecond)?"true":"false";

在您的情况下,只需测试boolValue
string MyString = boolValue?"true":"false".

为了提高可读性,除非非常琐碎(而且很多都是),请将条件和两个控制表达式放在单独的行上,就像您对if语句所做的那样。 - James Kanze

0

这被称为“三元运算符”,据我所记,当我学习Java(11/12年前)时,你不能这样做,或者至少老师根本没有教这个。也许是因为有时代码不够易读...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接