CodeZine(コードジン)

特集ページ一覧

変数と演算子の演習

四則演算プログラム

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/09/22 13:00

目次

シミュレータSM+で動作を確認しよう

 プログラムがエラーなくビルドできましたら、今度はシミュレータを使って動作させてみます。ちゃんと意図したとおりの動作になっているでしょうか。

 「シミュレータSM+」を起動するには、図11のようにPM plusの[ビルド]メニューから[ディバグ(D)]を選びます。

図11:シミュレータSM+を起動する
図11:シミュレータSM+を起動する

 SM+が起動すると、「Source」というウィンドウに先ほど作成したプログラムが表示されます(図12)。黄色いマーカーの場所が、これから実行をする行です。まだ何も実行していないので、変数宣言の上(前)のところにマーカがあります。

図12:SM+のSourceウィンドウ
図12:SM+のSourceウィンドウ

変数の中身を見る

 これから順に実行をしていきますが、このままでは本当に変数に目的の値が入ったかどうかわかりません。そこで、変数の中身を見る機能を呼び出します。図13のように、[ブラウズ]メニューから[ローカル変数(L)]を選択してください。

図13:変数の中身を見る機能を呼び出す
図13:変数の中身を見る機能を呼び出す

 すると、図14のようなウィンドウが表示されます。まだ中身はなにも表示されていません(原稿では、ウィンドウサイズを変更しています)。

図14:ローカル変数を見るウィンドウが開く
図14:ローカル変数を見るウィンドウが開く
プチ解説

 ここで突然、「ローカル変数」という名前が出てきました。

 C言語では、変数の宣言の場所や仕方で、その変数がどこまで影響を及ぼすことができるか(変数を読み書きできる範囲)を選択することができます。

 ローカル変数はその名のとおり、それを宣言した関数(ここではmain()からまで)の範囲でのみ有効な変数です。ローカルがあればグローバルもあるのかというと、そのとおりです。

 グローバル変数は、プログラムのどこからでも読んだり書いたりすることができます。これについては、次回以降の関数の説明で詳しく取り上げます。

 これで準備は完了です。プログラムを少しずつ実行していきましょう。これにはファンクションキーの[F8]を1回押すか、図15に示すSM+の画面左上にあるアイコン群から1行実行ボタン(図15)をクリックするのでしたね。

図15:SM+の1行実行ボタン
図15:SM+の1行実行ボタン

 一回実行すると図16のように、マーカーは変数宣言を一気に飛ばして、最初の実行文である58行目に移動します。ここで、先ほど開いたローカル変数を見るウィンドウを見てみると、図17のように宣言した変数a・b・cが表示されています。

図16:1行実行をすると、最初の実行文まで一気にいく
図16:1行実行をすると、最初の実行文まで一気にいく
図17:ローカル変数ウィンドウに変数が表示される
図17:ローカル変数ウィンドウに変数が表示される

 各変数の右隣には、なにやら数値らしきものが表示されています。これは、各変数の現在の値を示しています。

表示を10進数に変更

 "0x"で始まっているのは、16進数で表示していることを表しています。16進数については本稿の最後に簡単な解説を載せますので、知らない方はあとでそこを読んでください。

 16進数のままでは少々わかりにくいので、表示を10進数に変えておきましょう。まず変数aから。aが表示されている行をマウスで左クリックします。すると黒い行カーソルがaの行に移動します。今度はマウスを右クリックすると、表示方法を選ぶメニューが表示されます。下から4つめの[10進]を左クリックしてください(図18)。

図18:変数の表示方法を10進数に変更する
図18:変数の表示方法を10進数に変更する

 変更すると、図19のように変数aの値が10進数表示になります。

図19:変数aが10進数表示になった
図19:変数aが10進数表示になった

 同様に、変数bとcについても表示方法を10進数に変更してみてください。変更が終わると図20のような表示になります。

図20:すべての変数の表示方法を10進数表示にした
図20:すべての変数の表示方法を10進数表示にした
プチ解説

 「あれれ、わたしのところでは値が"500、0、0"になってない!」という方もいらっしゃるでしょう。安心してください。いま表示されているのは、コンピュータのメモリの中にあった一種のゴミです。

 プログラムでは、変数の宣言部分を実行しましたね? でも変数宣言では、変数の名前と大きさしか指定していません。なので、この時点では変数の値は「不定(何になってるかわからない)」なのです。

 変数に必要な領域をメモリ上に確保(場所取り)して、今はたまたまその場所もともとあった値が変数の値になってしまっているだけです。したがって、実行する環境によって何が表示されるかはまちまちです。理屈はちょっと難しいでしょうか? とりあえず、値を代入する前の変数の値は、例題と違っていてもOK(そういうもんだ)と思っておいてください。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:たった5つのルールではじめるC言語開発

もっと読む

著者プロフィール

  • 舘 伸幸(タチ ノブユキ)

    NECマイクロシステム株式会社 勤務 NPO法人SESSAME 所属 開発ツールのソフトウェア開発を経て組込みソフトウェア開発に従事。プライベートにも半田ごては手放さない。 2006年からSESSAME に参加。若い世代に物を作る楽しさを伝えていきたい。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5