2
に私が行動を知るために好奇心を持って増やす:間違った多次元配列変数は、C言語で、C
int x[10][10];
y = x[++i, ++j];
私は間違った方法である知っています。私はちょうどこの場合コンパイラが何をしているのか、プログラマがコードでこれを行うのはどうなるのかを知りたいだけです。
に私が行動を知るために好奇心を持って増やす:間違った多次元配列変数は、C言語で、C
int x[10][10];
y = x[++i, ++j];
私は間違った方法である知っています。私はちょうどこの場合コンパイラが何をしているのか、プログラマがコードでこれを行うのはどうなるのかを知りたいだけです。
これはカンマ演算子であり、誤用されています。 ++i, ++j
はj + 1
の値をもたらし、2つの副作用(修飾はi
およびj
)を有する。全体的な意味は、基本的には++i; y = x[++j]
を意味します。 y
のタイプに応じて、どちらが機能するかは異なります。プログラマがよく彼のコード
でこれを行う場合はその結果がどうなるか
、最も可能性の高い他のプログラマは、彼/彼女の殺人的なルックスを与えるだろう。
アハハ。 2番目の質問にニースの答え。 +1! ;) – Kyrol
私は事を理解していないだけです。++はこのケースでは消えましたか? – Kyrol
@Kyrolそれは消えませんでした。それはまだ実行されています(あなたは 'i'を後でチェックできます)が、その価値は放棄されます。 Cではすべての式に副作用があり、値が得られます。この場合、得られる値は 'i'に依存しないということが起こります。しかし、副作用があります。 – cnicutar