返回语句中的C ++条件

时间:2015-02-13 10:55:23

标签: c++

有没有办法做到这一点

bool retA = true, retB=false retC=true,retD=false;

return ( (if RetA -> A) + (if RetB -> B) + (if RetC -> C) + (if RetD -> A) )

基本上如果{A,B,C,D] = {1,2,3,4},则返回值为1 + 0 + 3 + 0 = 4.您可以使用16个不同的if / else语句执行此操作,但代码并不漂亮。

1 个答案:

答案 0 :(得分:8)

我认为您正在寻找条件运算符,如下所示:
testExpression ? trueExpression : falseExpression

所以:

return (retA ? A : 0) + (retB ? B : 0) + (retC ? C : 0) + (retD ? D : 0);

从语法派生的所有语言都有条件运算符(C,C ++,Java,JavaScript和其他几种)。


旁注:您在A条件之后使用RetD,但我认为您的意思是D。此外,不需要外部()对,所以我把它们关了。


你有时会听到称为“三元运算符”的条件运算符,这很好但不太正确:它是 一个 三元运算符(即,像*一样接受三个操作数的运算符是 一个 二元运算符(一个接受两个操作数的运算符)。据我所知,条件是C ++唯一的三元运算符,但理论上有一天会有更多...