“?”是啥意思?和“:”在布尔语句中做啥? [复制]
Posted
技术标签:
【中文标题】“?”是啥意思?和“:”在布尔语句中做啥? [复制]【英文标题】:What does "?" and ":" do in boolean statements? [duplicate]“?”是什么意思?和“:”在布尔语句中做什么? [复制] 【发布时间】:2013-05-30 09:47:19 【问题描述】:我认为这个问题是一个通用的编程问题, 但让我们假设我问的是 Java。
下面的语句是做什么的?
return a ? (b || c) : (b && c);
我在 SO 的许多主题中都看到了 ?
和 :
的语法,我在 Check if at least two out of three booleans are true 中找到了这个特别的语法
但我不知道它们是什么意思,那么如何使用它们,我相信这对我来说非常有用。
谢谢!
【问题讨论】:
这是一个捷径if-else
声明
? :
返回 boolean
值的方式与处理任何其他类型的方式相同。
那么为什么这里的每个人都认为这是该问题的重复?这个问题与这个问题无关。
@Makoto 应该被标记为 What is the Java ?: operator called and what does it do? 的副本,但我认为不值得重新打开它,以便可以将其作为另一个问题的副本关闭。
【参考方案1】:
这就是条件运算符。它的意思是:
condition ? value-if-true : value-if-false;
因此,在您的情况下,如果a
为真,则返回b || c
,如果a
为假,则返回b && c
。
【讨论】:
非常感谢!我不敢相信我在 google 中找不到这么简单的东西,我是对的,它为我节省了至少 4 行代码:) 它在技术上被称为条件运算符 - 它恰好是 a 三元运算符(带三个参数)。 而且,三元运算符对 C、php、javascript 等常用语言有效吗?我会在 10 分钟内选择你的答案。 是的,据我所知它起源于 C。 谢谢@Blorgbeard。立即编辑。【参考方案2】:这称为三元语句;它是 if-else 块的简写 - 您可以在 Google 上搜索以获取更多信息。
你的例子相当于
if (a)
return (b || c);
else
return (b && c);
【讨论】:
是的,我找了好几天了。我一直在努力简化我的代码,这个运算符将这 5 行变成了 1 行。我喜欢它 !谢谢。 @user223150 更少的行并不意味着更简单的代码,真的。如果你问我,if/else 子句更简单、更易读。将三元语句放在三元语句中可能会变得很麻烦。【参考方案3】:condition ? first statement : second statement
如果条件为真,则执行第一条语句,否则执行第二条语句
【讨论】:
已执行?那我也可以写condition ? function1() : function2();
吗?【参考方案4】:
它是三元运算符,整个语句扩展为更像这样的东西:
if a == true then
if b == true or c == true then
return true
else
if b == true and c == true then
return true
正如您的链接所说,以这种方式应用时,检查是否至少有三分之二的布尔值是正确的!
【讨论】:
【参考方案5】:它是一个条件运算符......就像 if 和 else......
例如----
a<b ? 4 :5 where a= 2 and b=5
因为 a 小于 b.... 则此运算符将返回 4... 否则返回 5....
简而言之...如果您的条件即之前的陈述?正确则返回第一个值..即冒号前的语句....否则返回第二个值......
【讨论】:
【参考方案6】:根据您的代码, 返回一个? (b || c) : (b && c);
结果会是这样的:
如果 a == true ,则结果 = b || C 否则结果 = b && c
它是一个三元运算符 & 用于大多数语言 C、C++、java、Javascript
【讨论】:
以上是关于“?”是啥意思?和“:”在布尔语句中做啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章