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

c语言交换a b(运算符),关于编程语言:是否有一个复合赋值运算符用于a = b相关推荐

  1. python语言与其他语言的区别_python与其他编程语言区别全在这

    对于接触过编程语言的人来说,如果要快速上手python,首先要了解python和其他编程语言的主要区别在哪?下边勇哥主要以使用较多的JAVA和C语言来做对比.喜欢的话,希望大家关注我们,我们会持续推出 ...

  2. c语言13amp;6,C语言的六种位运算符及其应用

    一.C语言的六种位运算符: &按位与 |按位或 ^按位异或 ~取反 < >>右移 1.   按位与运算 按位与运算符"&"是双目运算符. 其功能是 ...

  3. %3c- r语言运算符,R语言基础教程之运算符

    原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...

  4. c++运算符优先级_C语言入门教程-(6)运算符

    1.运算符概述 运算符是一种编译器执行特定的数学或逻辑操作的符号.C语言提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 其他运算符 2.算术运算符 算术 ...

  5. C语言中的位运算符主要有哪些?逻辑右移与算术右移的区别?

    逻辑右移与算术右移的区别? 逻辑右移就是不考虑符号位,右移一位,左边补零即可. 算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,:否则,就补0. 所以算术右移也可以进行有符号位的除法,右 ...

  6. C语言交换两个数字的三种做法

    C语言交换两个数字的三种做法 1.借助中间变量法: void swap(int *a , int *b) {int temp;temp = *a;*a = *b;*b = temp; } 2.使用加减 ...

  7. c语言运算符类型转换,C语言中强制类型转换运算符的独特作用

    C语言中强制类型转换运算符的独特作用 在C语言中有一个强制类型转换运算符,它为C语言中的数据类型转换带来 (本文共2页) 阅读全文>> 在进行C++类的设计时,我们常常需要为类对象设计运算 ...

  8. C语言1e12怎么识别,掌握C语言中基本的运算符

    2.3.7 逗号运算符与逗号表达式 (10) 2.4 数据类型转换 (11) 2.4.1 自动类型转换 (11) 2.4.2 赋值转换 (12) 2.4.3 强制类型转换 (12) 习题二 (13) ...

  9. 【转载】C/C++语言分析 每年学一种编程语言 git历史

    http://blog.csdn.net/turingbook/article/details/1778867 <程序员修炼之路>英文注释版 作者提出的经营之道是: --Invest Re ...

最新文章

  1. Dispatcher与UI线程交互
  2. 创业星光论坛(上):汇源是否应在万荣建厂
  3. linux Fedora35 grub2 改变启动顺序
  4. jsp获取多个checkbox的值
  5. ABAP Decimal byte
  6. java衍生作用_java-如何从AffineTransform衍生的形状对象中“...
  7. C语言基础之数据结构
  8. 网络计算机的分类包括哪些,计算机的分类有哪些
  9. vivox50pro鸿蒙系统,钱包卡包都承包 vivo X50 Pro+多功能NFC玩法多
  10. 用SPFA判断是否存在负环
  11. 如何利用大数据打造智慧交通
  12. html如何给标题设置边框和底纹,word如何设置文字边框和底纹
  13. team viewer 远程控制计算机,使用TeamViewer让手机控制电脑的设置步骤
  14. Flink 的 Time 三兄弟
  15. linux qt3编译出错,编译ARM 平台的qt4.7.3 遇到的一些问题总结
  16. 商场三十六计——第8计 “暗渡陈仓”
  17. 第三方支付频频被罚款,市场驱动下或是故意为之?
  18. B2B实现支付分账的简单方法
  19. Z370服务器系统,新机技嘉Z370主板Bios设置及重装win7系统|Z370主板安装win7教程
  20. 如何禁止PC端微信自动接收视频附件(不适用于3.7.0.29以后版本)

热门文章

  1. 零 目录-机器学习老师板书-斯坦福吴恩达教授
  2. 2.3 利用正规化解决过拟合问题-机器学习笔记-斯坦福吴恩达教授
  3. STM32 进阶教程 11 - RAM中运行程序
  4. 机构:去年购房者平均年龄近30岁
  5. Redis集群解决方案比较
  6. 最佳实践: 勿在 Servlet 中实现 SingleThreadModel
  7. bootstrap-动画过渡
  8. WPF数据绑定(1-简单数据绑定)
  9. 常用的 cocos2d-x 游戏开发工具
  10. WF4.0 基础篇 (二) Activity介绍及WriteLine Activity的使用