Language agnostic 小于时增加,小于时减少
出于好奇,有没有一种(独立于语言的*)方法将这两个泛型语句组合成一个语句Language agnostic 小于时增加,小于时减少,language-agnostic,programming-languages,Language Agnostic,Programming Languages,出于好奇,有没有一种(独立于语言的*)方法将这两个泛型语句组合成一个语句 if (a < b) a += x; else if (a > b) a -= x; 如果(ab)a-=x; 也可以用作 if (abs(b - a) < x) a = b; else if (a < b) a += x; else if (a > b) a -= x; if(abs(b-a)
if (a < b) a += x;
else if (a > b) a -= x;
如果(ab)a-=x;
也可以用作
if (abs(b - a) < x) a = b;
else if (a < b) a += x;
else if (a > b) a -= x;
if(abs(b-a)b)a-=x;
哦,现在我在写这篇文章,我在想这样的事情:
if (a != b) a += x * (a < b ? 1 : -1);
如果(a!=b)a+=x*(a
但这并不能真正提高可读性。也许还有别的办法
- =普通语言,而不是脑力操之类的语言或真正古老的语言
但这不是独立于语言的,如果你问我的话,这并不能真正帮助你做好准备….独立于语言有点棘手,但是如果你有cmp或类似的,你可以使用:
a += x * cmp(b, a)
cmp(b,a)返回:
- 如果b==a,则为0
- 1如果b>a
- -1如果a
a = 9;
b = 10;
x = 2;
if (a < b) a += x;
if (a > b) a -= x;
print a;
如果要在一个表达式中执行此操作,可以:
a = (a < b) ? min(b, a + x) : max(b, a - x);
a=(a
但是我认为第一种方法更清晰。您应该真正想知道为什么要这样做,编译器会进行很好的优化,并且给定的语句非常可读
a += x * sgn(b-a)
其中,sgn
是符号功能:
sgn x | x > 0 = 1
| x < 0 = -1
| otherwise = 0
sgn x | x>0=1
|x<0=-1
|否则=0
“if(a!=b)a+=x*(asignum
。我想我设计的这个例子在任何语言中都是行不通的;)
a += x * sgn(b-a)
sgn x | x > 0 = 1
| x < 0 = -1
| otherwise = 0