【发布时间】:2015-02-13 15:55:01
【问题描述】:
我正在使用三元运算符进行比较和计算,但它没有给出预期的结果。 我错过了什么或做错了什么?
int x = 600000;
x = (x > 250000 && x < 500000 ?
(x > 500000 && x < 1000000 ?
(x > 1000000 ?
x = (x / 100) * 30 :
x = (x / 100) * 20) :
x = (x / 100) * 10):
x);
我想实现这个:
if (x > 250000 && x < 500000)
{
x = (x / 100) * 10;
}
else if (x > 500000 && x < 1000000)
{
x = (x / 100) * 20;
}
else if (x > 1000000)
{
x = (x / 100) * 30;
}
【问题讨论】:
-
在这种情况下,if 块更具可读性,我不会为复杂的三元运算符而烦恼,而只需我的 2 美分。
-
如果您以相反的顺序检查它,您将不必验证上限
-
为什么要扼杀可读性?你也知道上面的逻辑有漏洞。如果 in 是 500000 或 1000000,那么您的 ITE 将永远不会正确。
-
这个问题似乎是题外话,因为它是关于“改进”工作代码。
-
我只是好奇:为什么“某些引擎”不能使用“if”?听起来很奇怪,它不“支持”“如果”——它看起来更像是老师强加的约束。
标签: c# ternary-operator