这叫什么

时间:2010-07-15 15:40:00

标签: c++ conditional-operator

  

可能重复:
  What does ‘?’ do in C++?

c ++中的这些语句叫做什么:

testNumber > 1 ? true : false;

9 个答案:

答案 0 :(得分:49)

那是conditional operator

如果a ? b : c为真,则b表达式评估为a;如果ca,则表达式false

在大多数语言中,这是三元运算符的唯一示例,它是一个带三个参数的运算符。

答案 1 :(得分:18)

条件表达

      Conditional Expression
   <------------------------>
    (x < y)    ?      x : y
    |_____|    |________|
     Test       Conditional
    Expression   Operator

'?'和':'构成条件运算符。

答案 2 :(得分:9)

三元陈述

答案 3 :(得分:3)

答案 4 :(得分:3)

(作为一个讨厌的挑剔者:出于某种原因,尽管问题是关于语句,但大多数人都会给出关于运算符的答案。)

首先,您的示例中的内容确实是语句。它被称为表达式语句。 C ++中有不同类型的语句(声明语句,跳转语句,迭代语句等),而这恰好是表达式语句。所以,如果您的问题确实是关于什么样的语句,那么迂腐正确的答案将是:它是表达式语句。故事结束。

现在,其次,如果您想深入了解,可能需要选择此表达式语句中使用的表达式。在这种情况下,表达式在顶层有一个条件?:运算符。该运算符的第一个操作数是使用关系>运算符的子表达式......依此类推。

答案 5 :(得分:2)

语言语法

  

这些类型的陈述是什么?   c ++调用:

你问了一个有多个答案的问题。从技术上讲,它将取决于所使用的实际语言,但您所展示的内容对于具有通用语法的大量语言来说非常典型。

语句只是表示可以被视为一个单元的一系列令牌的一种方式。语句通常以分号“;”结尾。有些陈述很简单,如

print 0;

有一个关键字和一个文字,而其他更复杂,如

a = foo(c*10) + 5;  

其中包含一个返回子表达式和一个算术子表达式的赋值,一个带有参数解析的函数调用,该参数解析涉及一个乘法子表达式,其变量查找作为操作数之一。

您的陈述是表达式的结果。

testNumber  >  1  ?  true  :  false       ;
====================================      ======================  
expression that needs evaluated           end-of-statement marker  

条件运算符

条件运算符有时被称为“三元运算符”。它有一个运算符和三个(因此三元)操作数。

testNumber > 1     ?    true     :    false   
==============    ---   =====   ---   ======
      |            |      |      |      |
      |            |    Exp2     |     Exp3
      |            |             |      
      |            └   Operator  ┘ 
      |
Exp1 (which has to be a boolean expression)

Exp1或Exp2的结果作为条件运算符表达式的值返回,如果“Condition”为真,则返回Exp1,否则返回Exp2。

说明

由于各种原因,条件(三元)运算符可能对编码人员不熟悉。

当我们想要根据某些条件返回不同的东西时,它的一个典型用途是简化代码。

例如,给定

a = 0;
b = 5;

我们可以轻松地在一行中返回除法结果

return (a == 0) ? NaN : b/a;  //Not-A-Number

我们可以使用表达式

构建返回
return (b/a);

但我们希望防止除零。使用if / else块会导致代码膨胀。

if ( a == 0)
{
  return NaN;
}
else
{
  return b/a;
}

相关问题

To ternary or not to ternary?
Which coding style you use for ternary operator?
Is this a reasonable use of the ternary operator?

答案 6 :(得分:1)

这意味着

//If this is true,
testNumber > 1
//testNumber is bigger than 1, then
true
//it is a true statemant, or
false
//else statement is faulse

或者你可以这样看:

if(testNumber > 1) {
true
}
else {
false
}

答案 7 :(得分:1)

三元运营商。

您的表达式用于查找值是true还是false。 例如,

boolean c = testNumber&gt; 1? true:false;

这里基于testNumber的值,c将为true或false。

答案 8 :(得分:0)

这是一个带有三元(或条件)运算符的表达式。