- 2 名前:volatileな名無しさん mailto:sage [2008/11/15(土) 05:06:31 ]
- >>前スレ994
たとえば、次のようなコードを書いたとしよう。 a = b = 1 + c; これをコンパイルして実行したとして、コンピュータの中でどういうことがおきるか。 コンピュータは、まず「1」を評価する。 この「評価する」というのは、「1」を整数の1であると認識して、 その整数値1をコンピュータが持っている小さな机の上に乗せることを意味する。 次に、「c」を評価する。 今度は、変数cの中に入っている値(仮に整数の2だったとしよう)を取り出して、 その値(仮に2)をさっきの1と一緒に机の上に並べる。 そして、今度は「1 + c」を評価する。 これは、いま並べて置いた整数値1と2を足して3という数を作り、 「1 + c」という式の値として、改めて机の上に置くことを意味する。 さらに、「b = 1 + c」を評価する。 ここで「1 + c」は3であることがわかっており、それは机の上にある。 そして「=」は代入するという演算子なので、変数bに整数値3を代入(コピー)する。 ここで、机の上の値3はなくなったわけではない。 この値は、「b = 1 + c」という式の値としてまだ残っている。 最後に、「a = b = 1 + c」が評価される。 上で書いたとおり、「b = 1 + c」は3として評価されているから、 変数bに値を代入したのと同様に変数aに3を代入する。 値3は、「a = b = 1 + c」の値として再度机の上に残されるが、 「;」が現れて「この文で行う作業は終わりです」ということになるので、 ここで残った値3は捨てられ、次のコードへと作業が移る。
|

|