2012-02-11 5 views
2

に私が行動を知るために好奇心を持って増やす:間違った多次元配列変数は、C言語で、C

int x[10][10]; 

y = x[++i, ++j]; 

私は間違った方法である知っています。私はちょうどこの場合コンパイラが何をしているのか、プログラマがコードでこれを行うのはどうなるのかを知りたいだけです。

答えて

6

これはカンマ演算子であり、誤用されています。 ++i, ++jj + 1の値をもたらし、2つの副作用(修飾はiおよびj)を有する。全体的な意味は、基本的には++i; y = x[++j]を意味します。 yのタイプに応じて、どちらが機能するかは異なります。プログラマがよく彼のコード

でこれを行う場合はその結果がどうなるか

、最も可能性の高い他のプログラマは、彼/彼女の殺人的なルックスを与えるだろう。

+0

アハハ。 2番目の質問にニースの答え。 +1! ;) – Kyrol

+0

私は事を理解していないだけです。++はこのケースでは消えましたか? – Kyrol

+0

@Kyrolそれは消えませんでした。それはまだ実行されています(あなたは 'i'を後でチェックできます)が、その価値は放棄されます。 Cではすべての式に副作用があり、値が得られます。この場合、得られる値は 'i'に依存しないということが起こります。しかし、副作用があります。 – cnicutar