最小限のC言語プログラム | Programming Place Plus C言語編 第1章

C言語編 第1章 最小限のC言語プログラム

先頭へ戻る

この章の概要

この章の概要です。


最小限のプログラム

最初の例として、最も小さいC言語プログラムを紹介します。

後で取り上げていますが、C99 の場合は、少し事情が変わっています。

main(void)
{
    return 0;
}

このソースコードをコンパイルして実行してみて下さい。「void」や「return」の部分の色が違うことは気にする必要はありません。また、警告を出すコンパイラもあるかも知れませんが、ここでは気にしないで進めてください(第0章にも書いたように、コンパイルや実行の方法まで解説する予定はありません。「参考リンク」に挙げたサイトなどを参考にして下さい)

このプログラムは「何の問題も無いが、実行しても特に何も起こらない」意味のないプログラムです。それでもわざわざ例に挙げたのは、C言語の文法をいくつか知ることができるからです。

まず、C言語では「空白」と「改行」を入れる位置は、基本的にほぼ自由です。"ほぼ" というのは、「return」のような1つの単語の途中には入れられないといった、わずかな例外事項があるためです。

空白は、半角の空白文字でも、タブ文字でも構いませんが、全角の空白文字ではいけません

なお、C言語では、アルファベットの小文字と大文字は区別されます。そのため「return」を「RETURN」と書いたり、「Return」と書いたりすると、それは「return」とは別物という扱いになってしまいます。

先ほどのプログラムは、次のどの形で書いてもすべて有効であり、しかも同じ意味です。

main(void)
{
    return 0;
}
main(void){ return 0; }
main(void){
    return 0;
}

どの書き方も文法上は正しいのですが、実際には冒頭で紹介した書き方が多く使われます。何を基準にすればいいかは、人によって言い分があるのですが、ソースコードは、後から他人が見る可能性があるということは忘れないようにしましょう。仕事でプログラムを書く場合は特にそうです。また、1つのプログラムの中では、1度決めた書き方で統一して下さい。その方が綺麗で見やすくなります。本サイトのC言語編では、冒頭の形式で統一します。

main関数

冒頭のソースコードにある、「main(void)」という部分は、main関数と呼ばれています。 関数については第9章で詳しく説明しますが、 とりあえずは、「複数の処理をまとめたもの」と考えて下さい。 { から } の間に、処理を記述します。

C言語のプログラムでは、main関数だけは必ず作らなくてはならないことになっています。 なぜなら、C言語のプログラムは、実行されると、main関数から開始されるからです。 スタート地点が分からないと処理が開始できないので、main関数の存在は必須であるということです。

なお、プログラムを実行して、 main関数内の処理が開始された後は、上から下に向かって進行していきます

main関数の書き方にはいくつか種類があるのですが、他の書き方については第45章で取り上げることにして、 ここでは詳しくは述べないことにします。 他のサイトや参考書などで違った書き方があっても、 「main」という名前であれば main関数です(もちろん、「main2」のように、他の文字がくっついていたら、それは main関数ではありません。

return文

returnは、関数内の処理を終了させる命令です。 「return 0;」のような記述は、これ全体で return文と呼びます。

今回のサンプルプログラムでは、main関数内の return文が実行されると、main関数内の処理がその時点で終了します。 main関数が終了すると、実行しているプログラム自体が終了します

return の後ろに 0 という数値が付いています。 これについては関数について説明するとき(第9章)にまとめて説明しますが、 とりあえず必要なものであると思っておいて下さい。 今のところは、常にこのように書いておけば良いです。

このように、「return」は、C言語に標準的に用意されている機能の1つです。 サンプルプログラムのソースコード内で色を変えているのは、 標準機能を表すキーワードだということを示したものです。 VisualStudio などでソースコードを表示した場合にも、同様に色が変化するでしょう。

セミコロン(;)

セミコロン (;) は、文の終わりを表す記号です。 C言語では、改行によって文が終わる訳ではありません。

ですから例えば、次のように書くこともできます。

return 0;  return 0;

このように、1行に複数の文を書くことは可能です。 実行は、左側にある文が先に処理され、次にその右側の文、更にあればその右の文へと続いていきます。 先程の例の場合だと、左側の return で関数が終了してしまうので、右側の文に行き着くことはありませんが、 一応、こういうふうに書くことは可能です。
ただし、基本的には1行1文を守った方が見やすいでしょう。 1行に文が複数あると、人間はその文の存在を見落としやすいです。

また、セミコロンしかない文も許されます。 これは、空文と呼ばれ、実行時には何もしません。

main(void)
{
    ;
    return 0;
}

空文を使う必要性はほとんどありませんが、まれに便利なこともあります。

C99 (最小限のプログラム)

C99

C99 では、main関数の末尾まで実行が終わると、そこに「return 0;」があるかのように動作します。 そのため、常に 0 を返すので構わないのならば、return文の記述を省略することが可能です。

一方で、関数の戻り値の型を省略することができなくなっているので(第9章参照)、 「int」を追加する必要があります。

結果として、C99 における最小限のプログラムは、以下のようになります。

int main(void)
{
}


練習問題

問題① 最小のC言語プログラムを、何も例を見ないで書いて下さい。改行位置などは自由ですが、自分のスタイルを決めて書いてみて下さい。

※この問題に解答はありません。基本的にコンパイルが成功すれば問題はありません。ただし、あまりに見にくい書き方は避けましょう。

参考リンク



更新履歴

'2018/4/2 「VisualC++」という表現を「VisualStudio」に統一。

'2018/1/23 全面的に文章を見直し、修正を行った。

'2015/7/4 「最小限のプログラム (C99)」を追加。

'2014/1/14 VisualC++ 2008 の対応終了。

'2014/1/10 clang 3.0 に対応。

≪更に古い更新履歴を展開する≫



前の章へ(第0章 はじめに)

次の章へ(第2章 Hello, Worldプログラム)

C言語編のトップページへ

Programming Place Plus のトップページへ


このエントリーをはてなブックマークに追加
rss1.0 取得ボタン RSS