『Head First C』第1章 Cを始める

Head First C ―頭とからだで覚えるCの基本
David Griffiths
オライリージャパン
2013-04-03


Cの基本

  • 通常、Cプログラムはコメントで始まる
  • 次に来るのはインクルード部(Cは小さな言語であるため、外部ライブラリがほぼ必須)
  • ソースファイルの最後には関数がある
  • すべてのCコードは関数内で動作する
  • main()関数が最初に実行される
  • main()の戻り値の型はintにすべき
  • main()が0を返せば正常終了、0以外の値を返した場合は異常が発生を意味する
  • プログラムの終了状態を調べるには、echo $?

コンパイル

文字列

  • Cはライブラリの無い状態では文字列をサポートしていない
  • Cの文字列は、文字の配列である
  • Cに文字の終端を認識させるためには、文字列の末尾にヌル文字()を付ける
  • 文字列の末尾にはヌル文字を含む必要があるため、文字列の長さは、最低限必要な文字数よりも1文字分余計に確保する必要がある。
  • 個々の文字には単一引用符「’」を用いる。
  • 文字列の定義には、通常、文字列リテラル(二重引用符「”」で文字列を囲む)を用いる。
  • 文字列リテラルは定数であるため、一度定義した後は、変更できない。

論理演算

  • ANSI Cには、Boolean型は無い。0か、それ以外かで真偽判定を行う(C99でtrue/falseが使えるようになったが、内部的には1/0)。
  • 「&&」がAND条件、「||」がOR条件を示す。
  • 「&」「|」はビット演算を実行する。 1 & 0は0、1 | 0は1。
  • 「&&」「||」はビット演算を実行して評価値を返すために使うので、「&」「|」でも代用できる。違いは、「&」「|」が必ず両辺の条件を評価するのに対し、「&&」「||」は右辺の評価をしないことがある(短絡)。

関数

  • 戻り値がない関数を作成する場合、戻り値の型をvoidにする
/**
* ブラックジャックのカードの値を評価するプログラム
*/
#include <stdio>
#include <stdlib>
int main()
{
char card_name[3];
int count = 0;
do {
puts("カード名を入力してください");
scanf("%2s", card_name);
int val = 0;
switch (card_name[0]) {
case 'K':
case 'Q':
case 'J':
val = 10;
break;
case 'A':
val = 11;
break;
case 'X':
continue;
default:
val = atoi(card_name);
}
if ((val < 1) || (val > 10)) {
puts("その値はわかりません!");
continue;
}
if ((val > 2) && (val < 7))
count++;
else if (val == 10)
count--;
printf("現在のカウント:%in", count);
} while(card_name[0] != 'X');
return 0;
}

コメントを残す

コメントを残す