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中,您基本上可以定义自己的运算符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值