C言語なら俺に聞け(入門篇) Part 39at TECH
C言語なら俺に聞け(入門篇) Part 39 - 暇つぶし2ch2:volatileな名無しさん
08/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は捨てられ、次のコードへと作業が移る。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch