可以在不引入除法的情况下缩短/简化以下代码吗?
a、b、c 和 y 是任意整数值:
int x = 0;
if (y > 0) {
x = c < y * a ? 1 : c < y * b ? 2 : 4;
}
if (y < 0) {
x = c > y * a ? 1 : c > y * b ? 2 : 4;
}
首先应该是这个。
if (y > 0) {
x = c < y * a ? 1 : c < y * b ? 2 : 4;
} else if (y < 0) {
x = c > y * a ? 1 : c > y * b ? 2 : 4;
}
简化程度是情人眼里出西施。但你可以像这样重写它。
y = y < 0 ? -y : y; // or use Math.abs()
c = c < 0 ? -c : c;
x = (y != 0) ? c < y * a ? 1 : c < y * b ? 2 : 4 : 0;