有没有办法做到这一点
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语句执行此操作,但代码并不漂亮。
答案 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 ++唯一的三元运算符,但理论上有一天会有更多...