我如何使用条件运算符?
我一直想知道如何用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将被分配给它