“?”是啥意思?和“:”在布尔语句中做啥? [复制]

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、phpjavascript 等常用语言有效吗?我会在 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

【讨论】:

以上是关于“?”是啥意思?和“:”在布尔语句中做啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

??!??! 是啥意思?运算符在 C 中做啥?

$做啥? $0 $1 $2 在 shell 脚本中是啥意思? [复制]

是啥! (感叹号)在 FreeMarker 中做啥?

请问HTML里面的hidden是啥意思???做啥用的

++ 运算符在 Python 中做啥? [复制]

:: 在 PostgreSQL 中做啥? [复制]