バズっているようなので相乗りします。
C/C++ では+++は許される
JavaScriptで+++は許されない+ ++は許される
Pythonでは++
も+++
も++++++++++
も許されます!
a = 1
b = 2
print(a+b) # OK
print(a++b) # OK
print(a+++b) # OK
# ...
print(a+++++++++++++++b) # OK
すなわち、+
を繋げてどんなに長い「演算子」をつくったとしても動きます。
上でつくった「演算子」は、前置演算子としても使えます。
上でつくった「演算子」は2項演算子ですが、同様に前置演算子バージョンもあります。
a = 1
print(+a) # OK
print(++a) # OK
print(+++a) # OK
# ...
print(+++++++++++++++a) # OK
-----
でもよい。
+
が嫌いな方は、-
を使って「演算子」を構成してもよいでしょう。
a = 1
b = 2
print(a-b) # OK
print(a--b) # OK
print(a---b) # OK
# ...
print(a---------------b) # OK
もちろん、前置演算子バージョンも使えます。
また、+
と-
を適宜まぜあわせて使ってもいいです。(+---+-+++-+
のように)
用途
ソースコードの区切り
print("first")
print("second")
print("third")
0-+-+-+-+-+-+-0
print("100 times")
JavaScriptだとダメ
Javascriptの場合、以下のように3文字以上の「演算子」はエラーとなる可能性が高いです。
let a = 1
console.log(+++a) // NG
console.log(a+++) // NG
console.log(++-a) // NG
ただし、以下はOKです。
let a = 1, b = 2
console.log(-++a) // OK
console.log(+-+a) // OK
console.log(a++-b) // OK
console.log(a-++b) // OK
console.log(a++-++b) // OK
なぜダメなの?
PythonとJavaScript (or C)の違いは、インクリメント演算子++
が定義されているかどうかです。例えば+++++
という「演算子」がある場合は演算子を最小一致で切り出していくので、++
++
+
という3つの演算子に分割されます。
++
演算子は右側(or 左側)が左辺値(変数)でなければならないため、エラーとなります。
思ったこと。
インクリメンタル演算子がある言語の場合、大体どれも同じ挙動をしますね。https://t.co/7RRNSuFLBk
— yasuo_ozu (@yasuo_ozu) July 14, 2020
※ ++
が存在しない言語でも、Luaの場合は++
のようにつなげて書くと+
+
のように分割されず、エラーになるようです