Revision 7432 of "C言語特論" on jawikiversity

== 概要 ==
この講座では1972年にDennis Ritchieが開発したプログラミング言語Cを取り扱います。主に上級者を対象とし、計算機プログラミングの基礎を学びます。

== Hello world ==
まずは何も見ずにHello worldを書いてみてください。Hello worldとは、画面に「hello, world」と表示するプログラムです。

あなたの書いたプログラムと以下のプログラムを比べてみましょう。

* hello.c
<source lang="c">
#include <stdio.h>

int main(void)
{
    printf("hello, world\n");
    return 0;
}
</source>

gccでコンパイルし、実行してみます。

<pre>$ gcc -W -Wall -o hello hello.c && ./hello
hello, world</pre>

それでは上記のプログラムの意味を1行ずつ解説していきます。

=== 1行目 ===
<source lang="c">
#include <stdio.h>
</source>

1行目では<tt>printf</tt>が定義されているstdio.hをインクルードしています。<tt>printf</tt>を使わないなら、この行は不要です。つまり次のような「最小の」プログラムも考えられます。

<source lang="c">
int main(void)
{
    return 0;
}
</source>

<tt>#include <stdio.h></tt>のように#から始まる行は、gccのコンパイラ(翻訳器)ではなく、プリプロセッサ(前処理器)によって処理されます。どのように処理されたかは、gccに-Eオプションを付けて確認することができます。

<pre>$ gcc -E hello.c</pre>

ちなみに#は[[w:シャープ (記号)|シャープ]]ではなく、[[w:番号記号|ナンバーサイン]]と呼ばれる記号です。「ハッシュ」や「パウンド」と読みます。したがって<tt>#include <stdio.h></tt>は「ハッシュインクルードスペース小なりスタンダードアイオードットエイチ大なり」などと読めますが、それらをすべて承知の上で「シャープインクルード」と発音する人もいます。また、そもそも#を読まない人もおり、読み方は人それぞれです。そしてプログラムを音読する能力はさほど重要ではありません。

=== 2行目 ===
2行目は空白です。この空白を空けない人もいますが、たくさん<tt>#include</tt>を書く場合は空白を空けた方が、[http://cou929.nu/data/google_javascript_style_guide/#id48 Google JavaScript Style Guide]で推奨されているようにまとまりがついて見やすくなると考えられます。

=== 3行目 ===
=== 4行目 ===
=== 5行目 ===
=== 6行目 ===
=== 7行目 ===

== Further reading ==
* [[Topic:PG学習法C言語初級]]
* [[b:C言語]]
* [[w:C言語]]

{{Stub/Ja}}

[[Category:プログラミング言語]]