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