ash*_*shr 5 programming-languages compound-operator compound-assignment
在很多语言中 a = a + b 可以写成 a += b 在数值运算的情况下,a + b 与 b + a 相同,因此单个复合运算符就足够了。
此外, a = a - b 可以写成 a -=b 。
但是,ab 不等于 ba。因此,复合赋值运算符不适用于 a = b - a
那么,操作a = b op a(其中op可以是 +、-、*、/、% 和顺序很重要)是否有复合赋值运算符?
[非交换操作]
不,那里没有。
我怀疑这个简写来自汇编语言,其中的ADD指令正是这样做的 - 接受两个操作数,进行加法并将其存储到第一个操作数。
我想说人们习惯于这样思考,所以这种模式也作为a += b简写出现在 C 语言中。其他语言从 C 中继承了这个。
我认为没有什么特别的理由去拥有或不拥有a = a + b或a = b + a。我认为在编程中,这两者都不是更需要的。原因是历史性的。这与我们使用 QWERTY 键盘布局而不是其他键盘布局的原因相同。
更新:看到这个,这是一个神话,因为 C 是基于 B 语言而不是来自汇编语言。起源尚不清楚。
+=。+=某种操作而不是a = b + a,因此他们对不存在速记的事实感到满意,并且没有要求它。最好的解决方案是只写a = b + a,因为乍一看它是清晰易读的。出于同样的原因(可读性)(更新:谁知道呢?)Python 不提供a++C 和其他语言已知的功能。你必须输入a += 1。对于编程初学者来说,速记+=也不是很容易理解,但人们仍然可以以某种方式至少猜出它的内容。它是传统、懒惰和可读性之间的妥协。
如果没有传统,可读性应该获胜,至少在 Python 中是这样。因此,人们应该清楚地多写几个字符,而不是寻找速记。就是这种情况a = b + a。
如果您要连接更多字符串,则应该注意.join()性能问题。