可以使用三元运算符编写if-else
语句,例如
output = (val>val2) ? "Condition is true" : "Condition is false";
现在考虑
if(condition1){
//do something
}else if(condition2){
//do something
}else if(condition3){
//do something
}
如何使用三元运算符编写上述代码?
答案 0 :(得分:4)
output = (condition1) ?
"First Case" : ((condition2) ?
"Second Case" : ( (condition3) ?
"Third Case") : (...));
但请记住,万一条件的数量超过3,这将是一场维护噩梦。
答案 1 :(得分:1)
试试这个。
(a?w:(b?x:(c?y:z)))
答案 2 :(得分:1)
像这样扩展形式的东西:
X outputfn( ... )
{
if(c1) { return A; }
else if(c2) { return B; }
else { return C; }
}
output = outputfn(...);
可以翻译成
output = (c1)?A:((c2)?B:C);
但它非常难以理解。
所以我建议将其提取到一个函数中并使用该函数。
答案 3 :(得分:1)
我想我明白了。你会想要这样的东西:
output = (val>val3)?"First Case":(val>val2)?"Second Case":"Default Case";
您只需将后续ifs放在表达式的最右边的子句中。请注意,最后总会有一个默认情况。
答案 4 :(得分:0)
不确定
你要写的是一个三元运算符作为if else语句。
好吧,让我们从逻辑上推断出这一点。
output = (val>val2) ? "Code here when condition is true" : "Code here when condition is false";
我们所说的是以下
if(val > val2)
{
//code here when condition is true;
}
else
{
//code here when condition is false;
}
就是这样!
快乐的编码! ;)
答案 5 :(得分:0)
我会这样格式化:
int result = condition1 ? 1
: condition2 ? 2
: condition3 ? 3
: -1;
但我同意其他海报,嵌套三元运算符很难理解。
答案 6 :(得分:0)
为什么呢?你写的内容非常清楚,使用三元运算符不会改变生成的代码。
答案 7 :(得分:-1)
output = (condition1) ? "Condition1 is true" : ((condition2) ?
"Condition2 is true" : ( (condition3) ?
"Condition3 is true" : " all Condition are false"));