概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C 例題:適用範囲(scope)
2006年11月22日 (水) | 編集 |
唐突にハヤシライスが食いたくなったので材料を買って帰る。
牛肉とタマネギがあれば作れるらしいし、タマネギは既に買ってあるし楽なものだ。
ソースはデミグラスだかドミグラスだかとかトマトとか赤ワインとかウースターソースとかその他諸々のモノで作れるらしいが、ハヤシライスは今回が初めてということでとりあえずはルウを買ってみた。
大体カレーだってシチューだってルウを使わなければ作れない技量なのである。このテの代物をお助け食品を使わないで作ろう等というのは100年早い。

そうだろう?

だからルウを使っても全く問題ないのである。
ルウを使わず作るのは次回以降のネタの為に取っておこう。

さて、今回のコスト
オーストラリア産牛肉(モモ肉切り落とし)…230g:218円
S&B とろけるハヤシ ルウ…8皿分:148円
道の駅雫石で買ったタマネギ…中3個:100円
合計:466円

一応8皿分という事なので1食辺りは59円(小数点切り上げ)ということになる。
味的にはカレーの方が好みなのだが、野菜をあまり使わない分、もしかしたらコストパフォーマンス的にはこちらの方が優れているかもしれない。
ただ、野菜が多い方が身体に良さそうだが。
これまた久し振り。
最近たるんでいるな俺。継続は力だってのに。

前回やった、外部変数と自動変数における通用範囲の違いを調べてみる。
以下のようなプログラムを実行し、変数の値の変移を見てみよう。

 int a;

void sub(void)
{
 int i;
 i=a=2;
 printf("subはa=%dでi=%dだぜ\n",a,i);
}

void main(void)
{
 int i;
 i=a=1;
 printf("mainはa=%dでi=%dだぜ\n",a,i);
 sub();
 printf("mainはa=%dでi=%dだぜ\n",a,i);
}



最初に宣言されているaは外部変数で、subやらmainやらで宣言されているiは自動変数である。

int a; 関数の外にあるので外部変数
int i; 関数sub内で宣言されているので自動変数
int i; これまた関数main内で宣言されているので自動変数



まず、main関数の最初で外部変数aと自動変数iにそれぞれ1が代入され、

void main(void)
{
 int i;
 i=a=1;
 printf("mainはa=%dでi=%dだぜ\n",a,i);


この時点のaとiがprintfで出力される。
なので、結果はa=1,i=1になる筈である。
で、次に関数subがコールされ

 sub();

関数sub内において、外部変数aと自動変数iに2が代入され

void sub(void)
{
 int i;
 i=a=2;
 printf("subはa=%dでi=%dだぜ\n",a,i);
}


この時点でのaとiがprintfで出力される。
sub関数内で2がそれぞれに代入されたので、当然a=2,i=2が出力される筈である。

そして関数subは終了し、最後にもう一度printfで各々の値を表示するが、

~中略~
 sub();
 printf("mainはa=%dでi=%dだぜ\n",a,i);
}


sub関数は終了したのでsub関数内で宣言された自動変数iは消滅し、今度はmain関数の方で宣言されている自動変数i=1が出力されることになる。一方、aは外部変数なのでsub関数が終わっても有効であり、結果としてはa=2が出力される筈である。


scope_test.jpgscope_test2.jpg
こんな感じに。

ま、概ね合っているな。
まとめよう。

遊戯王風にやると結構テンションが上がる

が、寒いのはどうにもならないので今日はここまで。
FEやって寝るとしよう。
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。