我正在考虑使用多个嵌套的三元运算符。我想要比较3个值。所有3都是整数。例如:
val1
val2
threshold
从这一切开始,我想得到1
或0
的结果。
所以,如果我要使用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;
虽然它编译,但并没有给我相同的结果......
答案 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
语句更具可读性。过度使用?:
运算符会使读取和理解代码变得更加困难。