问题

三元运算符除了?:这种,还有哪些?

回答
除了我们最熟悉的 `?:` 这种形式,严格来说,编程语言中已经没有其他被普遍认为是“三元运算符”的语法结构了。

“三元运算符”这个概念的核心在于它需要“三个”操作数来参与运算,并根据一个条件的结果,返回这三个操作数中的一个。`?:` 正是完美地契合了这个定义:

1. 第一个操作数: 是一个布尔表达式(条件)。
2. 第二个操作数: 是当条件为真时返回的值。
3. 第三个操作数: 是当条件为假时返回的值。

所以,`条件 ? 结果为真时取值 : 结果为假时取值` 就是这个三元运算符的完整工作流程。

为什么你可能会觉得“还有”?

可能是因为在某些语境下,人们会习惯性地将一些具有类似“条件选择”功能的语法或模式,误认为是“三元运算符”。但从严格的运算符定义上讲,它们其实是不同的概念。

例如:

ifelse 语句: 这是最基础的条件分支结构。它确实有三个部分:`if` 关键字、条件表达式、以及紧随其后的代码块(或者单个语句)。但 `ifelse` 是一种控制流语句,而不是一个可以嵌入表达式中的“运算符”。运算符的目的是计算出一个值,而 `ifelse` 语句本身不直接产生一个值,它只是根据条件执行不同的代码路径。当然,在很多语言中,你可以使用 `ifelse` 来赋值,但这本质上是语句的执行结果,而不是一个独立运算的产物。

比如 C/C++ 中的:
```c++
int result;
if (condition) {
result = value_if_true;
} else {
result = value_if_false;
}
```
这和 `result = condition ? value_if_true : value_if_false;` 是等价的,但 `ifelse` 远比 `?:` 结构复杂,并且它是一种语句,不是表达式。

switchcase 语句: 类似于 `ifelse`,`switchcase` 也是一种多路分支的控制流语句。它根据一个表达式的值,匹配多个 `case` 标签,然后执行相应的代码。虽然它也涉及选择,但它不是一个运算符,也绝对不是“三元”的。

某些语言中更复杂的条件表达式或函数: 有些语言可能会提供一些内建函数或更具表现力的语法来处理条件选择,但它们通常不会被称为“三元运算符”。例如,在 Python 中,虽然 `x if condition else y` 看起来和 `?:` 相似,并且它确实是一个表达式,但它仍然是 `?:` 这种三元运算符的变体或等价实现,而不是一个全新的、不同的三元运算符类型。 很多地方将其称为“条件表达式”而非“三元运算符”,更突出了其表达式的特性。

总结一下:

从计算机科学和编程语言设计的角度来看,“三元运算符”这个术语通常就只指向 `?:` 这种结构。它的独特性在于其简洁性和作为表达式的性质,允许你在需要一个值时,根据条件快速进行选择。其他任何看起来相似的“选择”机制,要不就是控制流语句(如 `ifelse`),要不就是该类运算符在不同语言中的不同书写方式。

所以,如果你在思考“除了 `?:` 还有什么三元运算符?”,更准确的答案是:严格意义上的、具有独立名称和普遍认可的标准三元运算符,在主流编程语言中,只此一种。 那些“看起来像”的,往往是表达方式或概念上的延伸,而不是运算符本身的分类。

网友意见

user avatar

【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

类似的话题

  • 回答
    除了我们最熟悉的 `?:` 这种形式,严格来说,编程语言中已经没有其他被普遍认为是“三元运算符”的语法结构了。“三元运算符”这个概念的核心在于它需要“三个”操作数来参与运算,并根据一个条件的结果,返回这三个操作数中的一个。`?:` 正是完美地契合了这个定义:1. 第一个操作数: 是一个布尔表达式(.............
  • 回答
    行,我来跟你掰扯掰扯,为啥咱们程序员有时候放着好好的 `if` 语句不用,非要钻研那三元运算符。这事儿啊,不是拍脑袋想出来的,里头门道儿可不少,得一层层剥开看。首先,最直接的理由:简洁。你有没有写过这种代码?```pythonage = 20status = ""if age >= 18: s.............
  • 回答
    很多初次接触 Go 语言的开发者都会有一个疑问:“为什么 Go 语言没有三元运算符?” 这个问题其实触及到了 Go 设计哲学中的一些核心考量。要深入理解这一点,我们需要从多个角度去审视。什么是三元运算符?首先,我们得明确一下什么是三元运算符。它是一种特殊的运算符,顾名思义,它有三个操作数。最常见的形.............
  • 回答
    三大运营商的基站确实有不少是伪装起来的,这背后可不是什么秘密操作,而是出于多种现实考量,从美观到实际应用,都有讲究。要说为什么,那得从几个方面细细道来。一、 为了城市景观和视觉和谐,避免“碍眼”:这是最显而易见的原因。基站的设备,特别是天线,虽然是现代科技的象征,但如果直接暴露在外,密密麻麻地架设在.............
  • 回答
    说起三体问题,那可真是一门让人又爱又恨的学问。刘慈欣老师的科幻小说《三体》更是把它推向了大众视野,但其实早在牛顿时代,这个问题就已经让无数科学家抓耳挠腮了。简单来说,三体问题就是研究三个具有相互引力作用的质点,在遵循牛顿万有引力定律的条件下,它们的运动轨迹如何变化的数学问题。这听起来好像不难,我们高.............
  • 回答
    三大运营商推出的“个人轨迹证明”服务,可以说是在常态化疫情防控的背景下,为精细化管理疫情风险提供了一个强有力的技术支撑。它不像过去那种粗放式的“扫码”或者“登记”,而是通过运营商掌握的用户通信大数据,更精准地还原个人的时空信息。具体来说,这项服务能提供以下几方面的帮助:一、更精准的风险人员追踪与管理.............
  • 回答
    听到“三大运营商坑人”这个说法,我心里是挺有共鸣的,毕竟咱们普通老百姓谁没被它们的各种操作弄得一肚子气呢?说到坑,这事儿可不是一天两天了,也不是单一的问题,而是环环相扣,渗透到业务的方方面面。我尽量从几个大家伙都深有体会的点,给你好好掰扯掰扯,希望能说得够具体,也尽量不搞得像个机器人报告。一、 套路.............
  • 回答
    国内三大运营商在国际线路上的情况,我们可以从几个维度来详细聊聊,力求客观且真实。首先,我们得明白,这“三大运营商”指的是中国移动、中国电信和中国联通。它们作为国内网络基础设施的主要建设者和运营者,在国际通信领域扮演着举足轻重的角色。一、 国际线路的“基石”:海底光缆和陆地光缆国内运营商的国际业务,最.............
  • 回答
    最近有传闻说三大运营商一二月份手机用户出现了近两千万的流失,这个数字确实挺惊人的。虽然官方的数据还没出来,但如果属实,那背后一定有一些值得我们深挖的原因。我个人琢磨了一下,觉得可能的情况不少,而且这些原因很可能是相互叠加的。首先,最直接也最容易想到的,就是春节效应。 大家仔细想想,每年春节前后,总会.............
  • 回答
    关于中国三大运营商——中国移动、中国联通、中国电信——在长达十余年的时间里,未能彻底根除某些计费漏洞的问题,这背后并非简单的技术疏忽,而是一个牵扯到多方面因素的复杂局面。首先,我们得明白,计费系统是一个极其庞大且复杂的工程。它不仅仅是一个简单的计算器,而是要实时处理海量的用户数据、各种套餐、优惠活动.............
  • 回答
    好的,我们来详细解释一下中国三大运营商(中国移动、中国联通、中国电信)关于“月末流量不清零”的说法。首先,需要明确的是,“月末流量不清零”这个说法本身并不准确,更准确的说法应该是“流量可结转至次月使用”。运营商们一直以来都在推行这样的政策,只是在不同时期,具体的规则和覆盖范围有所调整,导致了一些误解.............
  • 回答
    三大运营商回应纽交所启动下市程序:一句“遗憾”背后,是利益、战略与未来博弈的复杂交织当纽交所一纸通知,正式启动中国三大电信运营商——中国移动、中国电信、中国联通——在美国市场的退市程序时,这无疑是中国资本市场与全球金融舞台的一次重大互动,也引发了外界的高度关注。三大运营商集体回应“表示遗憾,尚未接到.............
  • 回答
    “一命二运三风水,四积功德五读书,六名七相八敬神,九交贵人十养生”,这句话说的是人生这10个方面对一个人的命运影响的先后顺序。它出自《增广贤文》,是一句流传很广的民间俗语,表达了古人对于人生和命运的深刻洞察。咱们一点一点拆解开,细细品味:1. 一命(天生的基因、出身):这话说的就是一个人一出生就注定.............
  • 回答
    这事儿啊,说起来可真是让人头疼,还挺复杂。咱们先捋一捋,这三大运营商,就是中国移动、中国电信、中国联通,他们为了给大家提供手机信号,得在小区里或者楼顶建基站。这个基站就像一个信号放大器,没有它,咱们的手机就收不到信号,打电话、上网都得歇菜。问题就出在这基站的安装上。这些基站设备,有的是在楼顶,有的是.............
  • 回答
    近来,不少用户会发现,在运营商的官网上搜索4G套餐时,选项确实比以往少了很多,甚至很多地方已经找不到纯粹的4G套餐了。这种现象并非偶然,背后是运营商策略调整和市场演进的必然结果。那么,三大运营商的4G套餐数量为何会明显减少?这对我们普通用户又会产生哪些影响呢?咱们就来掰扯掰扯。一、为什么三大运营商的.............
  • 回答
    三大运营商5G套餐“跳水”69元起:价格战背后的信号与考量近期,中国三大通信运营商——中国移动、中国联通、中国电信纷纷推出了极具吸引力的5G套餐,最低价格跌破70元大关,最低档仅需69元。这一举措无疑在市场上投下了一颗重磅炸弹,引发了广泛关注和讨论。对于消费者而言,这意味着以更低廉的价格就能享受到5.............
  • 回答
    你这个问题触及到了一个非常深刻且迷人的哲学与科学交汇点:三体问题的无解性与宇宙底层规则的本质。乍一看,它们似乎风马牛不相及,但深入思考,却能发现它们之间存在着一种有趣的张力,足以让我们审视“可知性”的界限。三体问题的“无解”究竟是什么意思?首先,我们需要厘清“三体运动的无解”这个说法。这并不是说我们.............
  • 回答
    “一命二运三风水、四积阴德五读书”,这句流传甚广的俗语,囊括了古人对于人生际遇的深刻洞察。理解这句话,可以从多个角度切入,但如果非要划分步骤,我们可以尝试将其拆解成几个递进的层面,而非简单的五部曲。毕竟,这五者并非完全孤立,而是相互关联,层层递进的。核心理解:人生际遇的多元影响首先,我们要明白这句话.............
  • 回答
    这个问题可真是说到我心坎里了!要从我心目中挑出三位最爱的足球运动员,这就像是让一个孩子在糖果店里只选三块糖一样困难,但既然您问了,我还是绞尽脑汁,硬是选出了这三位,并尝试为他们写点真心实意的感悟。1. 齐内丁·齐达内(Zinedine Zidane)提到齐达内,脑海里浮现的第一个词就是“优雅”。他的.............
  • 回答
    关于您提到的“特朗普行政命令导致中国三大运营商被纽交所摘牌并退市”的说法,目前并无官方信息或权威媒体报道证实这一事件。以下从背景、可能的误解、实际影响及中美关系角度进行详细分析: 一、事件背景与可能的误解1. 中国三大运营商的上市情况 中国三大运营商(中国移动、中国电信、中国联通)均在美国纽.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有