x = 3
とzが割り当てられていない場合、なぜ
2とz = x-- - --x
評価されるのですか?
私の教授は現在これについて講義しており、私は現在このジレンマに悩まされています。残念ながら、なぜそれが起こるのか誰も説明できません。
x = 3
とzが割り当てられていない場合、なぜ
2とz = x-- - --x
評価されるのですか?
私の教授は現在これについて講義しており、私は現在このジレンマに悩まされています。残念ながら、なぜそれが起こるのか誰も説明できません。
x-、x = 3の場合、その後は2になります。--x、x = 1の場合、減算(2から)が事前に行われるためです。
したがって、3-1=2です。
理解を深めるために、操作の順序を示します。
-- prefix
式を評価する前にデクリメントが行われることを意味し、式を評価postfix --
した後にデクリメントが行われることを意味します。
わかりました、その非常に簡単です:
角かっこを追加しましょう:
z = ( x-- ) - ( --x )
^^これは、トークン化後にコンパイラがコードを認識する方法です。
コンパイラは方程式(右部分)を左から右に評価します
今、
x--
xの値をPOPしてからデクリメントし、値をメモリにプッシュバックするのと同じです。わかりました、それをしましょう:
Xの現在の値は3で、デクリメントされた値は2です。したがって、方程式では3になりますが、Xには新しい値2が含まれます。
--x
X値をデクリメントしてから、この値を方程式にPOPすることに等しい。やってみましょう:
Xの現在の値は2です(前の操作でデクリメントされたため)。ここで、もう一度Xの値を減らします。2-1 = 1、わかりました。
ここで、方程式全体に戻りますz = (3) - (1) = 2
。