我如何使用条件运算符?

时间:2008-12-25 16:27:11

标签: c++ conditional-operator

我一直想知道如何用C ++兼容语言编写 "A ? B : C" 语法。

我认为它的作用类似于:(伪代码)

If A > B
   C = A
Else
   C = B

任何资深的C ++程序员都会帮帮我吗?

10 个答案:

答案 0 :(得分:57)

它的工作原理如下:

(condition) ? true-clause : false-clause

它最常用于赋值操作,尽管它也有其他用途。三元运算符?是缩短if-else子句的一种方法,在其他语言中也称为immediate-if语句(例如,VB中为IIf(condition,true-clause,false-clause))。

例如:

bool Three = SOME_VALUE;
int x = Three ? 3 : 0;

相同
bool Three = SOME_VALUE;
int x;
if (Three)
    x = 3;
else
    x = 0;

答案 1 :(得分:12)

它的工作原理如下:

expression ? trueValue : falseValue

这基本上意味着如果expression的计算结果为true,则返回或执行trueValue,否则将返回或评估falseValue。

请记住,只有表达式为true或false时,才会评估和执行trueValue和falseValue。这种行为称为短路。

答案 2 :(得分:4)

在c ++中,没有实际的部分内容。它被称为三元运算符。它的用法如下:< boolean statement> ? < result if true> :< result if false&gt ;;对于上面的例子,它看起来像这样:

C = A > B ? A : B;

维基百科上的这篇文章也讨论了它: http://en.wikipedia.org/wiki/Ternary_operation

答案 3 :(得分:2)

我认为你的意思是a = b? c:d,其中b是条件,c是b为真时的值,d是b为假时的值。

答案 4 :(得分:1)

我会说的?是一个捷径。但是,一些“硬核”程序员倾向于说长篇大论,所以在未来的情况下,人们可以轻松地阅读和修改代码。

例如,如果你写

int a = b<c ? b : c;

有些人声称写起来更清楚:

if(b<c)
 a = b;
else
 a = c;

因为在将来的情况下,人们可以抓住它。当然,一个简单的b&lt; c? b:c很容易捕获,但有时会输入复杂的操作,很难发现。

答案 5 :(得分:1)

似乎没有人提到条件运算符表达式的结果可以是C ++中的L值(但不是C语言中)。以下代码在C ++中编译并运行良好:

    int a, b;
    bool cond;
    a=1; b=2; cond=true;
    (cond? a : b) = 3;
    cout << a << "," << b << endl;

以上程序打印3

然而,如果a和b的类型不同,它就不会起作用。以下代码给出了编译器错误:

    int a;
    double b;
    bool cond;
    a=1; b=2; cond=true;
    (cond? a : b) = 3;
    cout << a << "," << b << endl;

答案 6 :(得分:0)

非常简单 它的基本语法是: ?表达式表达式2:表达式3;

如果表达式1保持为真,则表达式2将保持,否则表达式3将保持。

示例:

  

hey=24>2?24:34;

此处条件为真值24将分配给它。 如果它是假的,那么34将被分配给它

答案 7 :(得分:0)

  

只需将其写为

即可

C =(A&GT; B)A:B;

  

这就是:

if(A>B)

 C=A;

else

 C=B;

答案 8 :(得分:0)

这称为“三元运算符”,而?:是编写if-else语句的另一种方式。

查看此Codepen中的“示例#1”,然后取消注释...您会注意到它的作用。

现在注释“ Example#1”,取消注释“ Example#2”,然后看看会发生什么。该代码执行的操作完全相同……但是这次只有5行代码。请注意,?之前出现的是if(有条件的),而:之后出现的是要执行的东西。

但是,如果您有一个条件需要“ else-if”(可能有两个以上的结果),如Codepen的“ Example#3”中的条件(会增加用户写下特定错误答案的可能性)怎么办)?这样一来,三元运算符可能就没有那么有用了,但是您肯定可以使用三元运算符来连接多个条件,例如在此ES6 fizzbuzz示例中。

答案 9 :(得分:0)

就像这是我们的条件 -> A?B:C 因此,根据条件,如果“A”为真,则打印“B”,如果“A”为假,则打印“C”。 换句话说,我们也可以说它是 if else 条件的另一种方式。