如何使用多个嵌套的三元运算符来返回值

时间:2014-09-22 08:08:58

标签: c# comparison operators

我正在考虑使用多个嵌套的三元运算符。我想要比较3个值。所有3都是整数。例如:

val1
val2
threshold

从这一切开始,我想得到10的结果。

所以,如果我要使用if-else语句来执行此操作,我的逻辑将如下所示:

if (val1 - val2 > threshold)
{
    result = 1;
}
else if (val2 - val1 > threshold)
{
    result = 1;
}

到目前为止,我有这个:

int d = (alpha < 0 ? -alpha : alpha) > threshold ? (alpha < 0 ? -alpha : alpha) : 1;

虽然它编译,但并没有给我相同的结果......

3 个答案:

答案 0 :(得分:4)

result = (val1 - val2 > thresold) ? 1 : (val2-val1 > thresold) ? 1 : 0;

或者

result = (val1 - val2 > thresold) || (val2-val1 > thresold) ? 1 : 0;

或者

result = Math.Abs(val1 - val2) > thresold ? 1 : 0;

答案 1 :(得分:1)

result = val1 - val2 > threshold ? 1 : val2 - val1 > threshold ? 1 : 0

答案 2 :(得分:1)

为什么不这样:

int d = (val1 - val2 > threshold) || (val2 - val1 > threshold) ? 1 : 0;

但是,请仔细考虑这是否比if语句更具可读性。过度使用?:运算符会使读取和理解代码变得更加困难。