なぜこれが不可能なのですか?
int c = 0;
++c++;
またはPHPで:
$c = 0;
++$c++;
変数 c を 2 ずつインクリメントするか、何か変なことをすると思いますが、代わりにコンパイル中にエラーが発生します。私は理由を考え出そうとしましたが、実際には何も得られませんでした...私の理由は次のとおりです。
- コンパイラは ++ を読み取ります
- 変数を読み取ります
- 変数の値をインクリメントし、アプリケーションの実行時に返されるようにするために行うことは何でもします。
- それは別の++に遭遇します
- 値をインクリメントする前にそれを返すために前の変数を使用します
- ここがややこしいところです: 変数 c を使用するのでしょうか、それとも (++c) が返した値を読み取ろうとするのでしょうか? または、varname++ しか実行できない (2++ は実行できない) ため、(++c) をポインターとして認識し、そのメモリ位置を読み取ろうとしますか? それが何をするにしても、なぜコンパイルエラーになるのでしょうか? それとも、コンパイラーのプログラマーはそれが何の役にも立たないことを知っていたので、エラーを予防しているのでしょうか?
これを使用したいというわけではありません。また、1 回限りの使用ではないコードに対しても確かにそうではありませんが、ただ興味があります。