2011-10-26 176 views
1

可以使用三元运算符来编写if-else语句,例如,写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 
} 

如何写上面使用三元运算符的代码?

+2

你写的方式非常好 –

+6

你可以通过两种不同的答案来看到,你确实没有明确表达你的问题。 – EJP

回答

1

试试这个。

(a?w:(b?x:(c?y:z)))

+0

这是正确的,但可以说是不太可读。 – Larsenal

-1
output = (condition1) ? "Condition1 is true" : ((condition2) ? 
     "Condition2 is true" : ((condition3) ? 
     "Condition3 is true" : " all Condition are false")); 
+0

他想知道如何使用? :具有多种条件的形式。 –

0

肯定。

你想写的是一个三元运算符作为if语句。

那么,让我们从逻辑上推断出这一点。

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; 
} 

这就是它!

快乐编码! ;)

1

东西扩展形式是这样的:

X outputfn(...) 
{ 
    if(c1)  { return A; } 
    else if(c2) { return B; } 
    else  { return C; } 
} 

output = outputfn(...); 

可以翻译成

output = (c1)?A:((c2)?B:C); 

但它相当不可读。

所以我建议将它解压缩到一个函数中,而不是使用函数。

+0

真的很好的例子,你给我非常感谢 –

+0

我同意,通过将这个逻辑转移到一个函数中,从而给它一个有意义的名字,代码将更容易理解。 – neontapir

1

我想我明白了。你会想是这样的:

output = (val>val3)?"First Case":(val>val2)?"Second Case":"Default Case"; 

您只需把后续IFS表达的最右边的子句。请注意,最后总会有一个默认情况。

4
output = (condition1) ? 
      "First Case" : ((condition2) ? 
      "Second Case" : ((condition3) ? 
      "Third Case") : (...)); 

但请记住,万一条件的数量超过3,这将是一个维修的噩梦。

0

我会格式化这种方式:

int result = condition1 ? 1 
    : condition2 ? 2 
    : condition3 ? 3 
    : -1; 

但我与嵌套三元运营商可能很难理解其他海报同意。

0

为什么?你写的很清楚,使用三元运算符不会改变生成的代码。