C言語を学ぶとき、最初に必ず登場するのが「Hello World」プログラムです。
画面に「Hello, World!」と表示するだけの小さなプログラムですが、この中にはC言語の基本がギュッと詰まっています。
本記事では、C言語のHello Worldを「書く」「コンパイルする」「実行する」までを超丁寧に、一つずつ具体的に解説していきます。
C言語のHello Worldとは
Hello Worldプログラムの意味と役割

Hello Worldプログラムとは、画面に「Hello, World!」という文字列を表示するだけの、ごく小さなサンプルプログラムのことです。
C言語に限らず、多くのプログラミング言語の入門で最初に登場します。
このプログラムには、次のような役割があります。
文章で整理すると、Hello Worldは次のような「チェックリスト」を兼ねています。
まず、コンピュータにC言語の処理系(コンパイラ)が正しく入っているかを確かめます。
次に、自分でソースファイルを作り、それをコンパイルして実行ファイルを生成する一連の流れが動くか確認します。
さらに、画面に文字を表示するという基本的な入出力処理が理解できているかどうかをテストできます。
Hello Worldは、「開発環境が正常に動いているか」「自分が基本操作を理解しているか」を簡単に確かめるための最小のプログラムと考えるとわかりやすいです。
C言語入門で最初にHello Worldを書く理由

C言語入門で、ほぼ必ず最初にHello Worldを書くのには、いくつかの理由があります。
まず、とても短いコードで、プログラムの基本構造を一通り含んでいることが挙げられます。
具体的には、関数、ライブラリのインクルード、波カッコ、セミコロンなど、C言語の重要な要素が、一画面内にすべて収まります。
次に、Hello Worldが動けば、「コンパイラが正しくインストールされているか」「エディタでファイルを保存できるか」「ターミナルやコマンドプロンプトから実行できるか」といった、開発環境がセットアップできているかどうかの検証ができます。
そして何より、初めて自分の手で書いたプログラムが画面に表示されることで、「自分にもプログラムが書けた」という成功体験を得られます。
これは、その後に続く学習のモチベーションにとって非常に重要です。
C言語でHello Worldを書く準備
必要なソフト

C言語でHello Worldを書くためには、次のようなソフトウェアが必要です。
まず必要なのは、テキストエディタです。
これは、プログラムの元になるソースコードを書くためのソフトです。
Windowsに標準で入っているメモ帳でも書けますが、Visual Studio Codeなど、プログラミングに適したエディタを使うと快適です。
次に必要なのが、Cコンパイラです。
Cコンパイラは、.cファイルに書かれたC言語のソースコードを、コンピュータが直接実行できる形式(実行ファイル)に変換するソフトです。
代表的なものとして、GCCやClangがあります。
最後に、初心者にとって便利なのが、統合開発環境(IDE)です。
IDEは、エディタとコンパイラ、デバッガなどを1つにまとめたツールで、Visual StudioやCode::Blocksなどが有名です。
最初はコマンドラインでのコンパイルを覚える意味でも、コンパイラ単体を使ってみることをおすすめしますが、IDEを使うとコンパイルや実行がボタン1つで行えるため、学習のハードルを下げてくれます。
WindowsとMacでのC言語開発環境の違い

WindowsとMacでは、C言語の文法自体は同じですが、開発環境の準備方法やコマンドの細かい部分に違いがあります。
Windowsでは、標準ではCコンパイラがインストールされていない場合が多いため、MinGW-w64やVisual Studioをインストールしてコンパイラ(GCCやMSVC)を用意します。
コマンドを実行する場所としては、コマンドプロンプト(cmd)やPowerShellを使うことが一般的です。
作られる実行ファイルは、通常hello.exeのような.exe拡張子を持ちます。
一方、Macでは、Xcode Command Line Toolsをインストールすることで、gccやclangといったコンパイラが使えるようになります。
コマンドはターミナルアプリから実行します。
MacやLinuxでは、実行ファイルに拡張子を付けないことが多く、helloのような名前になります。
このように、OSごとにコマンドを打つ場所やインストール方法は異なりますが、C言語のソースコードそのものは同じです。
そのため、一度基本を覚えれば、どのOSでも同じようにC言語を書けます。
C言語のソースファイル(cファイル)の作り方

C言語のソースコードは、テキストファイルとして保存します。
ここでは、WindowsやMacに共通する基本的な手順を文章で説明します。
まず、テキストエディタを開いて新しいファイルを作成します。
次に、Hello Worldプログラムのコードを書き込みます。
この時点ではまだファイル名は付いていませんので、メニューから保存を選び、hello.cのように.c拡張子を付けて保存します。
拡張子が.cであることが非常に重要です。
コンパイラは、この拡張子を見て「これはC言語のソースファイルだ」と判断します。
もし.txtのまま保存してしまうと、コンパイル時にエラーになったり、そもそも対象として認識されないことがあります。
保存場所については、最初のうちはデスクトップに「c_practice」などのフォルダを作り、その中にhello.cを保存するとわかりやすいです。
あとでコマンドラインからそのフォルダに移動し、コンパイルと実行を行います。
C言語のHello Worldの書き方
最小構成のHello Worldサンプルコード

ここでは、最も基本的なC言語のHello Worldプログラムを示します。
#include <stdio.h> // 標準入出力(printfなど)を使うためのヘッダーファイルを読み込む
// プログラムの実行開始地点となる関数
int main(void) {
// 画面(標準出力)に "Hello, World!" と表示し、最後に改行(\n)を入れる
printf("Hello, World!\n");
// プログラムが正常終了したことをOSに知らせるための戻り値
return 0;
}
このプログラムをコンパイルして実行すると、次のような結果が表示されます。
Hello, World!
この短いコードの中に、C言語の基本構造がすべて詰まっています。
次のセクションで、一つずつ詳しく見ていきます。
main関数とprintf関数の基本構造

C言語のプログラムは、必ずmainという名前の関数から実行が始まります。
今回のコードでは、次の部分がそれに当たります。
int main(void) {
printf("Hello, World!\n");
return 0;
}
ここでintは、この関数が整数(int型)の値を戻り値として返すことを意味しています。
main(void)のvoidは、「引数を取らない」という意味です。
波カッコ{ }で囲まれた部分が、main関数の本体です。
main関数の中で使っているprintfは、文字列や数値を画面に表示するための関数です。
次の1行が、まさにHello Worldを表示している部分です。
printf("Hello, World!\n");
括弧の中に、表示したい文字列を書きます。
文字列は" "で囲みます。
末尾にある\nは改行文字で、文字列を表示した後に改行を入れる役割を持っています。
行末の;(セミコロン)については後で詳しく説明します。
最後のreturn 0;は、プログラムが正常終了したことをOSに知らせるための記述です。
整数の0は「成功」を意味し、0以外の値は「何らかの異常終了」を意味するのが一般的な慣習です。
インクルード(#include)と標準ライブラリの意味

プログラムの先頭には、次の1行が書かれています。
#include <stdio.h>
これはプリプロセッサディレクティブと呼ばれ、コンパイルの前処理で実行されます。
#includeは、「指定したヘッダーファイルの内容をこの場所に読み込む」という意味を持ちます。
stdio.hは、標準入出力(Standard Input/Output)に関する関数が宣言されているヘッダーファイルで、printfやscanfなどが含まれています。
#include <stdio.h>を書くことで、コンパイラはprintfという関数が存在することを認識し、正しくコンパイルできるようになります。
もしこの行を削除してしまうと、コンパイラはprintfが何なのかわからなくなり、警告やエラーが発生する可能性があります。
そのため、標準ライブラリの関数を使うときには、対応するヘッダーファイルを#includeするというルールを覚えておくことが大切です。
セミコロン・波カッコなどC言語の文法の注意点

C言語では、文法上のルールを少しでも破ると、コンパイルエラーになってしまいます。
Hello World程度の短いプログラムでも、次の点に注意が必要です。
まず、1つの文(ステートメント)の終わりには必ず;(セミコロン)を付けるというルールがあります。
例えば、次の行には必ずセミコロンが必要です。
printf("Hello, World!\n"); // ← セミコロンを忘れない
return 0; // ← ここにもセミコロン
セミコロンを忘れると、コンパイラは「この文はどこまで続くのか」を判断できず、構文エラーになります。
次に、波カッコ{ }の対応も重要です。
関数の本体や制御構文(ifやforなど)のブロックは、必ず{で始まり}で終わります。
片方だけを書き忘れると、「予期しないファイルの終わり」などのエラーが出ます。
エディタによっては、対応するカッコをハイライトしてくれる機能があるので、活用するとよいです。
また、文字列を囲む" "も、開きと閉じをペアにする必要があります。
片方だけ書き忘れると、以降の行全体が文字列の一部と解釈され、やはりエラーになります。
このように、C言語は「記号の1つ抜け」でもエラーになる厳密な言語です。
その代わり、一度ルールに慣れてしまえば、どこでエラーが起きているかを論理的に追いやすいという利点もあります。
C言語のHello Worldをコンパイル・実行する手順
コマンドラインでのコンパイル方法

C言語のソースコードhello.cを書いたら、それをコンパイルして実行ファイルを作成し、実行する必要があります。
ここでは、代表的なコンパイラであるGCCを例に、基本のコマンドを説明します。
まず、コマンドライン(WindowsならコマンドプロンプトやPowerShell、Mac/Linuxならターミナル)を開き、hello.cを保存したフォルダに移動します。
その上で、次のようなコマンドを入力します。
gcc hello.c -o hello
このコマンドは、「hello.cをコンパイルして、helloという名前の実行ファイルを作る」という意味になります。
-oオプションは、「出力ファイル名を指定する」ためのオプションです。
コンパイルが成功すると、カレントディレクトリ(今いるフォルダ)にhelloまたはhello.exeという実行ファイルが作成されます。
これを実行することで、プログラムが動きます。
# Mac / Linux の場合
./hello
# Windows の場合
hello.exe
# または
.\hello.exe
実行すると、次のような出力が画面に表示されます。
Hello, World!
ここまでの流れ、つまり「ソースを書く → コンパイルする → 実行する」という3ステップが、C言語プログラム開発の基本パターンです。
Windows環境でのコンパイルと実行方法

Windows環境では、まずGCCコンパイラが使える状態を準備しておく必要があります。
MinGW-w64などをインストールし、gccコマンドが使えるようにパス設定を済ませておくことを前提とします。
1つの具体的な流れを文章で追ってみます。
まず、スタートメニューからcmdと入力してコマンドプロンプトを起動します。
次に、cdコマンドを使って、hello.cを保存したフォルダに移動します。
cd C:\Users\あなたのユーザー名\Desktop\c_practice
フォルダに移動したら、次のようにコンパイルします。
gcc hello.c -o hello
エラーが出なければ、同じフォルダにhello.exeという実行ファイルが作られます。
これを次のように実行します。
hello
あるいは、明示的にパスを指定して次のように書いてもかまいません。
.\hello.exe
実行すると、コンソールにHello, World!と表示されます。
ここまで動けば、Windows上でのC言語開発環境は正しく機能していると考えられます。
Mac/Linux環境でのコンパイルと実行方法

MacやLinuxでは、ターミナルからの操作が基本になります。
まず、ターミナルを起動し、cdコマンドでhello.cがあるフォルダに移動します。
cd ~/Desktop/c_practice
現在の場所を確認したいときはpwd、ファイル一覧を見たいときはlsコマンドを使います。
pwd
ls
コンパイルは、Windowsと同様にgccやclangで行います。
gcc hello.c -o hello
# または
clang hello.c -o hello
コンパイルが成功すると、現在のディレクトリにhelloという実行ファイルが作成されます。
Unix系OSでは、カレントディレクトリの実行ファイルを実行する場合、./を付ける必要があります。
./hello
実行すると、次のように表示されます。
Hello, World!
このように、MacやLinuxでは「./実行ファイル名」で実行するという点が、Windowsとの大きな違いです。
コマンドラインに慣れていない方は、最初は戸惑うかもしれませんが、慣れると非常に強力な開発スタイルになります。
実行ファイルの作られ方と実行時の仕組み

C言語では、ソースコードhello.cから、直接実行ファイルができるわけではありません。
内部的には、次のようなステップを踏んでいます。
まず、コンパイラがhello.cを読み込み、機械語に近い中間的な形式であるオブジェクトファイル(通常はhello.oなど)を作成します。
この段階では、まだ標準ライブラリの関数printfの実体などがリンクされていません。
次に、リンカと呼ばれる仕組みが、オブジェクトファイルとライブラリ群を結び付けて、最終的な実行ファイル(Windowsならhello.exe)を生成します。
ここで初めて、printf関数の本体などがプログラム内に取り込まれます。
実行ファイルを起動すると、OSがそれをメモリ上に読み込み、エントリポイントであるmain関数から命令の実行を開始します。
main関数内でprintfが呼び出されると、OSの提供する仕組みを通じて画面に文字が表示される、という流れになっています。
このように、Hello Worldの裏側では、コンパイル・リンク・実行という複数のステップが働いています。
最初はここまで意識しなくても構いませんが、「C言語はコンパイルしてから実行する言語である」という点だけは、しっかり押さえておくとよいです。
よくあるコンパイルエラーと対処法

Hello Worldプログラムはシンプルですが、それでも初心者がつまずきやすい典型的なコンパイルエラーがいくつかあります。
代表的なものを具体例とともに紹介し、対処法を説明します。
セミコロンの付け忘れ
次のように、printfの行でセミコロンを忘れるとします。
#include <stdio.h>
int main(void) {
printf("Hello, World!\n") // ← セミコロンを付け忘れている
return 0;
}
この状態でコンパイルすると、GCCでは例えば次のようなメッセージが出ることがあります。
hello.c: In function 'main':
hello.c:4:5: error: expected ';' before 'return'
4 | return 0;
| ^~~~~~
この場合、直前の行にセミコロンが必要だというヒントが出ています。
エラーメッセージの行番号と位置を参考に、printfの行末に;を追加すれば解決します。
#include <stdio.h> の書き忘れ
次に、ヘッダーファイルの#includeを忘れたケースです。
// #include <stdio.h> を書き忘れている
int main(void) {
printf("Hello, World!\n");
return 0;
}
この状態でコンパイルすると、次のような警告やエラーが出る可能性があります。
hello.c: In function 'main':
hello.c:4:5: warning: implicit declaration of function 'printf'
コンパイラがprintfの宣言を知らないため、「暗黙の宣言をした」という警告を出しています。
対処法は単純で、プログラムの先頭に#include <stdio.h>を追加すれば良いです。
ファイル名・パスの間違い
最後によくあるのが、コンパイル対象のファイル名や場所を間違えるケースです。
例えば、次のようなコマンドを打ったとします。
gcc hell.c -o hello
しかし、本当のファイル名はhello.cだった、という状況です。
この場合、コンパイラは次のように言ってきます。
gcc: error: hell.c: No such file or directory
このメッセージは、「hell.cというファイルが見つからない」という意味です。
スペルミスや、現在のディレクトリが正しいかどうかを確認しましょう。
ls(Mac/Linux)やdir(Windows)でフォルダ内のファイル一覧を確認し、正しいファイル名を指定して再度コンパイルします。
このように、コンパイルエラーは、エラーメッセージをよく読んで原因を推理することが重要です。
最初は英語のメッセージに戸惑うかもしれませんが、expected(予期された)・before(〜の前で)・no such file(そのようなファイルはない)といったキーワードを少しずつ覚えていくと、だんだん読み解けるようになります。
まとめ
本記事では、C言語のHello Worldを題材に、ソースコードの書き方から、コンパイル、実行までの一連の流れを詳しく解説しました。
短いプログラムの中に、main関数、printf関数、#include、セミコロン、波カッコといったC言語の基本要素がすべて含まれていることがわかったと思います。
Hello Worldが自力で書けて実行できたら、環境構築は成功です。
次のステップとして、画面に別のメッセージを表示したり、数値を扱うサンプルに進んでいくと、C言語の理解がさらに深まっていきます。
