什么“?”和“:”在布尔语句中做什么?

时间:2013-06-04 05:24:07

标签: java boolean operators boolean-expression

我认为这个问题是一般的编程问题, 但我们假设我要求这个用于Java。

以下陈述是做什么的?

return a ? (b || c) : (b && c);

我在SO的许多主题中都看到了?:的语法,我在Check if at least two out of three booleans are true找到了这个特别的

但我不知道他们的意思,所以如何使用它们,我相信这对我来说非常有用。

谢谢!

6 个答案:

答案 0 :(得分:7)

这是条件运算符。它意味着:

condition ? value-if-true : value-if-false;

因此,在您的情况下,如果b || c为真,则返回a;如果b && c为假,则返回a

答案 1 :(得分:3)

这被称为三元声明;它是if-else块的简写 - 你可以谷歌获取更多信息。

您的示例等同于

if (a) {
   return (b || c);
} else {
   return (b && c);
}

答案 2 :(得分:2)

condition ? first statement : second statement

如果condition为true,则执行第一个语句,否则执行第二个语句

答案 3 :(得分:0)

这是三元运算符,整个语句扩展为更像这样的东西:

if a == true then
  if b == true or c == true then
    return true
else 
  if b == true and c == true then
    return true

正如您的链接所说的更优雅的方式,以这种方式检查是否至少有三分之三的布尔是真的!

答案 4 :(得分:0)

它是一个条件运算符... jst喜欢if和else ....

e.g ----

a<b ? 4 :5      where a= 2 and b=5

因为a小于b ....然后此运算符将返回4 ...否则返回5 ....

总之......如果您的情况,即之前的陈述?是正确的然后它返回第一个值..即冒号之前的语句....否则它返回第二个值......

答案 5 :(得分:0)

根据你的代码,     回来了? (b || c):( b&amp;&amp; c);

结果将如下:

如果a == true,则结果= b || C      否则结果= b&amp;&amp; ç

它是一个三元运算符&amp;用于大多数语言C,C ++,java,Javascript