天国にいけるC言語入門 シーズン1 パソコン超初心者がゼロから東方風シューティングをつくる編 ver.0.4.15.789 RELIEF
おまけのコーナー☆変数aに格納される数値データ情報、変数bに格納される数値データ情報はともにコンデンサーに電荷として蓄えられています。
おまけのコーナー☆変数aに格納される数値データ情報、変数bに格納される数値データ情報はともにコンデンサーに電荷として蓄えられています。
☆おまけのコーナー☆
変数aに格納される数値データ情報
変数bに格納される数値データ情報
は
ともにコンデンサーに電荷として蓄えられています。
ニーモ 「あー aとbがこうなってああなって・・・」
ソーラー 「うふふっ。 そ・ん・な・貴女に・・・」
ニーモ 「ええと・・」
ソーラー 「いかがでしょうか?
a=10;
b=20;
a=b;
これらの命令文は
まず
変数aに10を代入
変数bに20を代入
最後に
変数aに変数bが格納している値を代入せよ。という命令をコンピュータに
与えています。
わたしが得た情報によると実はコンピュータの中では
コンデンサーという電気をためる装置があって
a=10;
が行われた場合
変数aに対応するコンデンサーには
数値10に相当する電荷がたまるそうです。
b=20;
が行われた場合
変数bに対応するコンデンサーには
数値20に相当する電荷がたまるそうです。
つまり
コンピューターの中に
aというコンデンサー
と
bというコンデンサー
が別々にあるということです。
この
aに10に相当する電荷
bに20に相当する電荷
が
たまっている状態でコンピューターに
a=b;
つまり
aにbの値20を代入せよ。と命令をだすと
aに対応しているコンデンサーの中では
いまの10ほど電荷がたまっている状態から
bの20ほど電荷がたまっている状態に釣り合うように
電荷の量が調整されます(詳しくは後の解説をみてね)」
ニーモ 「へー」
妖精の羽がきらっときらめく。
ソーラー (うわっまぶしい。 でもきれいだなー。うっとり)
ニーモ 「それで、それで」
うれしそうにせかすニーモ。
ソーラー 「つまり
#include <stdio.h>
int main(void)
{
int a,b;
a=10;
b=20;
a=b;
printf("りんごは%d円です。\n",a);
return 0;
}
このプログラムを また表示しますが、
int a,b;
a=10;
b=20;
においてはまず
aというコンデンサーに電荷10をため
bというコンデンサーには電荷20をためますね。
この時点でaのコンデンサーの電荷量は10です。
そして
a=b;
で
aのコンデンサーの電荷量を 今もっている10から
bのもっている電荷量20まで
ひきあげなさい。
とコンピューターは命令されます。
そして
aの電荷量は20にひきあげられます
つまり
変数aに格納されている数値データは20になるわけです。
そして
printf("りんごは%d円です。\n",a);
を実行すると
りんごは20円です。
が表示されることになります
ニーモ 「変数aとbは電気(電荷)のいれもの(コンデンサー)で
a=b;
と
コンピュータに命令して
aとbの電荷の量を同じ高さに釣り合わせるか・・・ふふふ
わかりやすいーーー。
ソーラー、 あなた、 優しいのね。」
ソーラー 「いやー ま、まあまあかな?」
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
実は
コンピューターのデータを蓄えるための
コンデンサーは
データを保存するために
電荷を貯えるのですが
1つのコンデンサーは
電荷をためる
電荷をためない
の2つのうちのどちらかの状態しかとることはできません。
ですので
1つのコンデンサーでは
今 蓄えている電荷が10だとして
2倍の電荷の20を貯えるということはできないのです。
??
では
どうやって
数値データ10
の
2倍の
数値データ20を
保存しているのかな?
aのint型の変数宣言
int a;
によって作製された変数aには
データを蓄えるために
32個のコンデンサー○が
コンピュータによってあたえられます。
int型の変数aも手厚い待遇に喜んでいます。
コンデンサーを〇
コンデンサーに電荷が蓄えられている状態を●
であらわすと
変数aのコンデンサーに電荷が蓄えられていない状態は
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇
であらわされます
このとき
変数aには数値データ0が保存されていることになります。
変数aに
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●
と電荷が貯えられているときは
変数aには数値データ1が保存されていることになります。
となると
変数aに
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●●●●●●●●
と電荷が貯えられているときは
●が8個あるので
変数aには数値データ8が保存されていることになりそうなものですが
そうはなりません。
実は
変数aには数値データ255が保存されていることになります。
では
変数aには数値データ8が保存されているときは
どのように
電荷が貯えられているのかというと
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇〇〇
と
変数aに
電荷が貯えられています
全く不思議ですね。
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●
が
数値データ1が保存されている状態で
で
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇〇〇
が
数値データ8が保存されている状態をあらわすなんて・・・
ど~なってるのでしょう(笑)
数値データを変数aに保存するとき
コップに水を注ぎ込むように
数値データの大きさに合わせて
コンデンサーに
電荷がたくわえられているわけではないのですね。
もう少し
int型の変数aにデータがどのように保存されているかを鑑賞すると
数値データ10は
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇●〇
のように
電荷が保存されています
これも
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●●●●●●●●●●
のように
●10個分ではありません。
数値データ20は
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇●〇〇
のように
電荷が保存されています
このときも
〇〇〇〇〇〇〇〇〇〇〇〇●●●●●●●●●●●●●●●●●●●●
のように
●20個分ではありません。
そこで
int型の変数aに
数値データ10が
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇●〇
のように保存されていて
int型の変数bに
数値データ20が
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇●〇〇
のように保存されているとき
a=b;
と
変数aに変数bを代入したら
どのようなことがおこるのでしょうか?
何がおこるのでしょうか?
このときは
変数bに
数値データ20が貯えられているのと
同じ
○と●の配置の
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇●〇〇
で
変数aに割り当てられたコンデンサーに電荷が保存されることになります。
つまり
変数aに変数bを代入するということは
変数bに割り当てられたコンデンサーに電荷が貯えられた状態と
同じように
変数aに割り当てられたコンデンサーに電荷が貯えられるようにする
ということなのですね。
電荷が蓄えられていないコンデンサー〇
と
電荷が蓄えられているコンデンサー●の配置を
あわせることになるといえます。
なんだか
パズルみたいでおもしろいですね。
solarplexussより
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます