我如何使用条件运算符?

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

我认为它的工作原理是:( 伪代码)

 If A > B C = A Else C = B 

请问任何经验丰富的C ++程序员请帮助我吗?

它是这样工作的:

 (condition) ? true-clause : false-clause 

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

例如:

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

是相同的

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

它是这样工作的:

 expression ? trueValue : falseValue 

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

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

在C ++中,这是没有实际的一部分。 它被称为三元运算符。 它是这样使用的:<布尔语句>? <结果如果是true>:<结果如果false>; 对于上面的例子,它看起来像这样:

 C = A > B ? A : B; 

这篇关于维基百科的文章也讨论了这个问题: http : //en.wikipedia.org/wiki/Ternary_operation

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

我会说呢? 是一个捷径。 但是,一些“硬核”程序员往往会说这样写很长时间,所以在将来的情况下,人们可以很容易地读取和修改代码。

例如,如果你写

 int a = b<c ? b : c; 

有人声称写得更清楚些:

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

因为在将来的情况下,人们可以抓住它。 当然,简单的b <c? b:c很容易被捕获,但是有时候会有复杂的操作,很难被发现。

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

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

上述程序打印3,2

但是,如果a和b是不同的types,它将不起作用。 下面的代码给出了一个编译器错误:

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

它很简单,它的基本语法是:expression1?expression2:expression3;

如果expression式1成立,则expression式2将成立,否则expression式3成立。

例:

hey=24>2?24:34;

在这里条件是真的值24将被分配给它。 如果它是假的,那么34将被分配给它