Независимо от языка, это немного сложно, но если у вас есть cmp или подобное, вы можете использовать это:
a += x * cmp(b, a)
cmp (b, a) возвращает:
- 0если b == a
- 1, если b> a
- -1, если a
Также в предложенной вами реализации есть ошибка:
a = 9;
b = 10;
x = 2;
if (a < b) a += x;
if (a > b) a -= x;
print a;
Вывод: 9 (ожидается 11)
Вам нужен else
, чтобы это исправить.В качестве альтернативы, если вы хотите, чтобы a
не проходил мимо b
, сделайте следующее:
if (a < b)
{
a = min(b, a + x);
}
else if (a > b)
{
a = max(b, a - x);
}
Если вы хотите сделать это в одном выражении, вы можете:
a = (a < b) ? min(b, a + x) : max(b, a - x);
Iдумаю, первый способ яснее.