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 控件监听方法,Andro