SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

たった5つのルール

変数と演算子


  • X ポスト
  • このエントリーをはてなブックマークに追加

 今回からは、いよいよC言語の学習編に入ります。説明は、プログラムの初心者の方にもわかってもらえるよう進めます。多少C言語をご存じの方には少し冗長に感じられるかもしれませんが、復習のつもりでおつきあいいただければと思います。

  • X ポスト
  • このエントリーをはてなブックマークに追加

使用するルールは5つだけ

 さっそく、今回使うC言語のルールを見てみましょう。以下の5つです。

  1. 変数と演算子
  2. ループ制御
  3. 条件判断
  4. 関数
  5. 便利なおまじない(define、include、pragma)

 マジカルボックスのプログラムは上記のルールだけで記述してあります。本来C言語は、ルールごとに相当数の記述方法のバリエーションを持っています。そこで、それらについても、必要最低限(かつ、ちょっとしたプログラムを記述するには十分な内容)に厳選しています。たとえば、変数には10種類以上の型(変数の大きさを示すもの)がありますが、マジカルボックスのプログラムで使っているのは2種類だけです。難しいと言われるポインタ変数や配列はもちろん登場しません。

まずは変数から

 プログラムでは、いろいろな値を入れておく入れ物が必要です。この入れ物を変数と呼びます。たとえば、a=b+5;(aにbと5の和を入れる)という処理の場合、abが変数です。

 C言語では、変数を使う場合にはまず「こういう名前の変数を使いますよ」と宣言をする決まりになっています。そして宣言をするときには、その変数の大きさ、つまり扱うことのできる値の範囲を「変数型」として示す必要があります。マジカルボックスのプログラムで使う変数型は、char(キャラ型)とint(イント型)の2つです。

 charは、charactor(キャラクタ)という単語からきていて、その名のとおり本来は文字(アルファベットとか数字)を扱う目的の変数型です。一般に8ビット(=1バイト)の大きさを持ちます。char型の変数で扱うことのできる値の範囲は-128から+127までです。実際のプログラムでは、特に文字に用途を限らず、前記の範囲の小さな値を扱うときにこの型を使います。

 一方intは、integer(インテジャー)の略で、整数型を意味します。サイズは、実行するマイコンで一番効率よく扱うことのできる大きさが割り当てられます。マジカルボックスに使用している78K01S/KA1+用のCコンパイラCC78K0Sでは、intは16ビットの大きさです。扱うことのできる値の範囲は、-32768から+32767です。

プチ解説:変数の構造

 ここでは、変数の構造について、8ビットの場合を例に説明します。

 8ビットのうちの最上位の1ビットは、符合、つまり値が正か負かを表すのに使用されます。最上位ビットが0なら正の値、1なら負の値です。図1に構造を示します。

図1:char型(8ビット)変数の構造
図1:char型(8ビット)変数の構造

 正の値の場合、b7は0で、b6~b0が0000000~1111111の範囲で表現できます。すなわち、十進数でいうと0から127までです。

 一方、負の値はどうなるでしょうか。コンピュータでは一般に負の値は、「2の補数」という表現方法を使います。2の補数の求め方は、変数の大きさよりも1ビット大きい値で、最上位ビットだけが1の値から、元の数を減算します。

 たとえば-1は、以下のようになります。

1 0000 0000    (8+1ビットの最上位が1の値)
-   0000 0001    (1を引く)
――――――――――――――――――――――
    1111 1111

 得られた値に1を足せば0になる(8ビットからはみ出た分は消える)ことからも、この値が-1であることがわかります。2の補数は、元の値の0と1を反転させたものに1を足しても求めることができます。

0000 0001    (1)
1111 1110    (0と1を反転して)
1111 1111    (1を足す → -1の2の補数表現)

 ではこの表現方法で、8ビットにおける一番小さな負の値はいくつでしょうか。

 一番小さい値は、最上位の符合ビットを残して他が全部0の値、つまり1000 0000です。これがいくつかは、2の補数を計算して符合を反転させてやるとわかります。1と0を反転させると0111 1111。これに1を加算すると、1000 0000となり、128です。つまり元の値は-128であり、これが符合付きの8ビット変数で表現できる一番小さい値です。16ビットの場合も考え方は同じです。

変数の宣言のしかた

 変数は、型 変数の名前;で宣言します。たとえば、char型でShoeishaという名前の変数を作りたければ、以下のように表記します。

char  Shoeisha;

 変数名には、アルファベット、数字、_(アンダーバー)を使うことができます。アルファベットの大文字と小文字は区別されます。また、以下のような制限があります。

  1. 先頭文字に数字を使ってはいけない
  2. C言語の予約語(たとえば whileとかifとかmainとか)を使ってはいけない
  3. あまり長い名前は区別がつけられないことがあるので注意(長さ制限は、Cコンパイラの仕様で決まります)
  4. _(アンダーバー)から始まる名前は、コンパイラのライブラリなどで内部的に使用されていることがあるので、避ける方がよい

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
知っておくべき演算子は4種類

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
たった5つのルールではじめるC言語開発連載記事一覧

もっと読む

この記事の著者

舘 伸幸(タチ ノブユキ)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3724 2009/03/26 17:57

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング