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中,您基本上可以定义自己的运算符。
c语言交换a b(运算符),关于编程语言:是否有一个复合赋值运算符用于a = b相关推荐
- python语言与其他语言的区别_python与其他编程语言区别全在这
对于接触过编程语言的人来说,如果要快速上手python,首先要了解python和其他编程语言的主要区别在哪?下边勇哥主要以使用较多的JAVA和C语言来做对比.喜欢的话,希望大家关注我们,我们会持续推出 ...
- c语言13amp;6,C语言的六种位运算符及其应用
一.C语言的六种位运算符: &按位与 |按位或 ^按位异或 ~取反 < >>右移 1. 按位与运算 按位与运算符"&"是双目运算符. 其功能是 ...
- %3c- r语言运算符,R语言基础教程之运算符
原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...
- c++运算符优先级_C语言入门教程-(6)运算符
1.运算符概述 运算符是一种编译器执行特定的数学或逻辑操作的符号.C语言提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 其他运算符 2.算术运算符 算术 ...
- C语言中的位运算符主要有哪些?逻辑右移与算术右移的区别?
逻辑右移与算术右移的区别? 逻辑右移就是不考虑符号位,右移一位,左边补零即可. 算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,:否则,就补0. 所以算术右移也可以进行有符号位的除法,右 ...
- C语言交换两个数字的三种做法
C语言交换两个数字的三种做法 1.借助中间变量法: void swap(int *a , int *b) {int temp;temp = *a;*a = *b;*b = temp; } 2.使用加减 ...
- c语言运算符类型转换,C语言中强制类型转换运算符的独特作用
C语言中强制类型转换运算符的独特作用 在C语言中有一个强制类型转换运算符,它为C语言中的数据类型转换带来 (本文共2页) 阅读全文>> 在进行C++类的设计时,我们常常需要为类对象设计运算 ...
- C语言1e12怎么识别,掌握C语言中基本的运算符
2.3.7 逗号运算符与逗号表达式 (10) 2.4 数据类型转换 (11) 2.4.1 自动类型转换 (11) 2.4.2 赋值转换 (12) 2.4.3 强制类型转换 (12) 习题二 (13) ...
- 【转载】C/C++语言分析 每年学一种编程语言 git历史
http://blog.csdn.net/turingbook/article/details/1778867 <程序员修炼之路>英文注释版 作者提出的经营之道是: --Invest Re ...
最新文章
- Dispatcher与UI线程交互
- 创业星光论坛(上):汇源是否应在万荣建厂
- linux Fedora35 grub2 改变启动顺序
- jsp获取多个checkbox的值
- ABAP Decimal byte
- java衍生作用_java-如何从AffineTransform衍生的形状对象中“...
- C语言基础之数据结构
- 网络计算机的分类包括哪些,计算机的分类有哪些
- vivox50pro鸿蒙系统,钱包卡包都承包 vivo X50 Pro+多功能NFC玩法多
- 用SPFA判断是否存在负环
- 如何利用大数据打造智慧交通
- html如何给标题设置边框和底纹,word如何设置文字边框和底纹
- team viewer 远程控制计算机,使用TeamViewer让手机控制电脑的设置步骤
- Flink 的 Time 三兄弟
- linux qt3编译出错,编译ARM 平台的qt4.7.3 遇到的一些问题总结
- 商场三十六计——第8计 “暗渡陈仓”
- 第三方支付频频被罚款,市场驱动下或是故意为之?
- B2B实现支付分账的简单方法
- Z370服务器系统,新机技嘉Z370主板Bios设置及重装win7系统|Z370主板安装win7教程
- 如何禁止PC端微信自动接收视频附件(不适用于3.7.0.29以后版本)