C++ と同じように、事前増分/減分演算子 ( ++
、 ) を使用するにはどうすればよいですか?--
++count
実行しても変数の値が変更されないのはなぜですか?
ベストアンサー1
++
は演算子ではありません。2 つの演算子です+
。演算子は恒等+
演算子であり、何も行いません。(説明: および単項演算子は数値に対してのみ機能しますが、仮想演算子が文字列に対して機能するとは予想されないと思います。)+
-
++
++count
次のように解析します
+(+count)
つまり
count
+=
やりたいことを実行するには、少し長い演算子を使用する必要があります。
count += 1
++
一貫性と簡潔さのためにand演算子が省略されたのではないかと思います--
。Guido van Rossum がこの決定に対してどのような議論をしたのか正確にはわかりませんが、いくつかの議論が考えられます。
- より簡単な解析。技術的には、解析は
++count
曖昧で、 、 、 (単項演算子 1 つ) になる可能性+
と+
同じcount
くらい+
簡単に++
、 、count
(単項++
演算子 2 つ) になる可能性もあります。これは重大な構文上の曖昧さではありませんが、存在します。 - よりシンプルな言語。
++
は、の同義語に過ぎません。これは、C コンパイラが愚かで、ほとんどのコンピュータが備えている命令を+= 1
最適化する方法を知らなかったために発明された省略形です。最適化コンパイラとバイトコード解釈言語の今日では、プログラマがコードを最適化できるように言語に演算子を追加することは、特に一貫性と可読性を重視して設計された Python のような言語では、通常は好ましくありません。a += 1
inc
- 紛らわしい副作用。
++
演算子のある言語でよくある初心者の間違いの 1 つは、前置増分/減分演算子と後置増分/減分演算子の違い (優先順位と戻り値の両方) を混同することです。Python では、言語の「落とし穴」を排除することを好みます。優先順位の問題のC言語における前置/後置インクリメントかなり毛深く、信じられないほど簡単に失敗してしまいます。