c语言交换a b(运算符),关于编程语言:是否有一个复合赋值运算符用于a = b
在许多语言中,a = a + b可以写成+ = b
在数值运算的情况下,a + b与b + a相同,因此单个复合运算符就足够了。
此外,a = a - b可以写为 - = b。
但是,a-b不等于b-a。 因此,复合赋值运算符不适用于a = b - a
那么,是否存在操作a = b op a的复合赋值运算符(其中op可以是+, - ,*,/,%,并且顺序很重要)?
[非交换业务]
这取决于所涉及对象的类型。
我要求的情况是+操作不是可交换的,无论对象的类型如何。
只需通过附加而不是前置来构建字符串。
除了连接之外你用2个字符串试图做什么?
@Imno Strings只是一个例子。
顺便说一句,为避免在答案中出现与字符串相关的混淆,你可以使用/ =或 - =操作数的顺序很重要。
@Maksee感谢您的建议。 虽然,我个人不明白为什么每个人都只是跳过弦乐而不是实际的问题!
我不认为有这个符号,但正如@MaximYegorushkin建议的那样,你可以使用=-,=%等来表示它。
@didierc这正是我的想法,但似乎有点不合逻辑:/
没有a = b + a的简写符号。如果你需要为字符串做很多a = b + a,你最好建立一个像这样的列表:
lst = []
...
lst.append("a")
lst.append("bb")
lst.append("ccc")
lst.append("dddd")
...
lst.reverse()
return ''.join(lst) #"ddddcccbba"
我并不特别关心字符串。 这只是解释这个问题的一个例子。
不,那里没有。
简写的起源
我怀疑这个简写来自汇编语言,其中ADD指令完全相同 - 需要两个操作数,添加并将其存储到第一个。 del>
我会说人们习惯这样思考,所以这种模式在C语言中也出现了a += b简写。其他语言来自C。 del>
我认为没有特别的理由拥有或不拥有a = a + b或a = b + a。我认为在编程中经常需要它们中的两个。原因是历史性的。与我们使用QWERTY键盘布局而不是其他键盘布局的原因相同。 del>
更新:看到这一点,这是一个神话,因为C基于B语言,而不是来自汇编语言。起源尚不清楚。
可能的原因
每个操作员都会使语言更复杂。 Python支持运算符重载,因此有更多的工作要有一个新的。
它很少用于与+=进行比较。
人们从汇编语言更多地使用+=类型的操作而不是a = b + a,所以他们没有任何简写存在并且没有请求它的事实。
可读性问题。
缺乏合适的语法。你会如何设计它?
可能的解决方案
最好的解决方案是只写a = b + a,因为它从第一眼看就清晰可读。 出于同样的原因(可读性) del>(更新:谁知道?)Python不提供从C和其他语言中已知的a++。你必须输入a += 1。 +=速记对于编程初学者来说也不是很容易理解,但人们仍然可以以某种方式至少猜测是什么。它是传统,懒惰和可读性之间的妥协。
如果没有传统,可读性应该赢,至少在Python中。因此,应该清楚地写一些字符,而不是寻找速记。 a = b + a就是这种情况。
注意
如果要连接更多字符串,则应注意.join()以了解性能问题。
有意思(起源)。 支持你的想法的任何事情/证据? 我曾经认为这种符号只是作为一种语言特征而发展,因为它易于编写。 我个人不认为除了绝对的初学者之外,这个符号应该有任何可读性问题。
我没有证据,但我尝试了谷歌的东西,我偶然发现了这个推理:stackoverflow.com/questions/3654830/人们提到了不必要的复杂性,可读性等等。这个答案在某种程度上与我的想法有关,潜入C的历史和链接 一些来源stackoverflow.com/a/3654973/325365,但它似乎只是一个神话。
我更新了答案。
谢谢,特别是链接:)
我不知道任何语言内置的这种快捷方式,但有些语言可以让你创建一个。
例如,在Scala中,您基本上可以定义自己的运算符。
《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读总结
以上是生活随笔为你收集整理的c语言交换a b(运算符),关于编程语言:是否有一个复合赋值运算符用于a = b的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: win10上的截图工具怎么用 Win10
- 下一篇: android 默认光标大小设置,如何默