計算機科学のブログ

C - Cを始める - Cの世界に飛び込む - コンパイラー

Head First C ―頭とからだで覚えるCの基本David Griffiths(著)、 Dawn Griffiths(著)、 中田 秀基(監修)、 木下 哲也(翻訳)、 O’Reilly Media)の 1章(Cを始める - Cの世界に飛び込む)、p.23(コンパイラになってみよう)の解答を求めてみる。

Makefile

all: a.out
	./a.out

a.out: main.c
	cc main.c

コード

main.c

#include <stdio.h>

int main()
{
    // 小さいカード
    int card_a = 1;
    if (card_a > 1)
        card_a--;
    if (card_a < 7)
        puts("a: 小さいカード");
    else
        puts("a: エース");

    // 出力なし
    int card_b = 1;
    if (card_b > 1)
    {
        card_b--;
        if (card_b < 7)
            puts("b: 小さいカード");
        else
            puts("b: エース");
    }
    // エース
    int card_c = 1;
    if (card_c > 1)
    {
        card_c--;
        if (card_c < 7)
            puts("c: 小さいカード");
    }
    else
        puts("c: エース");
    // Dはコンパイルエラーになる
}

入出力結果(Terminal, Zsh)

% make
cc main.c
./a.out
a: 小さいカード
c: エース
%