記事には広告を含む場合があります。

C言語入門講座

【C言語】最初のプログラムHello Worldをわかりやすく解説

2022年4月29日

おゆ

組み込み系プログラマとして5年働いていた元エンジニアです。得意言語はC言語とC++。本サイトでは学生および新人組み込み系プログラマに向けてプログラミング知識をわかりやすく解説しています。

最も初歩的なプログラムである「Hello World!」を使ってC言語の基本を解説します。

記事の内容

  • C言語におけるHello Worldの書き方
  • プログラム文の意味を解説
  • エラーが出た時の対処方法
おゆ
元エンジニアの筆者がわかりやすく解説します。

この記事はプログラミング環境が整っていることが前提です。プログラミング環境の作り方は以下の記事で解説しています。

プログラミング環境の作り方

初心者向け!Visual Studio CodeでC言語・C++を使う方法

Visual Studio CodeでC言語を使いたいけど、どういう設定をすればいいの?C++を使うときは? こんなお悩みにお答えします。 記事の内容 Visual Studio CodeでC言語とC ...

続きを見る

【C言語】最初のプログラムHello Worldをわかりやすく解説

「Hello World」の書き方

プログラミングを学ぶ上で最も初歩的なプログラムがHello Worldです。画面上に「Hello World!」と表示するだけのプログラムです。

C言語では以下のように記述できます。

//Hello World
#include <stdio.h>
void main()
{
    printf("Hello World!\n");
}

実行結果

Hello World!

このようなプログラムの文をコードと呼び、コードを書くことをコーディングと言います。コードが書かれたファイルはソースファイルと呼ばれます。

コードの解説

コメント

コード内にはコメントを書けます。例えば「//Hello World」部分はコメントです。コメントはコンパイラが読み飛ばしてくれるのでプログラムには反映されません。メモしておきたいことがあるときに使います。

スラッシュ2つ「//」を書くとその後ろがコメント扱いになります。スラッシュとアスタリスクを使って「/*Hello World*/」のように書くと「/*」と「*/」に囲まれた範囲がコメントになります。
例:

#include <stdio.h> //ここはコメント
void main()        
{   //ここもコメント
    printf(/*ここもコメント*/"Hello World!\n"); 
    /*
     ここもコメント
    */
}

実行結果

Hello World!

#include

「#include <stdio.h>」は後で出てくるprintfを使うために必要な文です。

printfのように何かしらの機能を持ったパーツは関数と呼ばれます。

コンパイラはprintfとだけ言われても具体的に何をすべきかわかりません。何をすべきかは実はstdio.hファイルに書いてあります。

プログラムの先頭に「#include <stdio.h>」と書くことで不明な関数があったときはstdio.hファイルを見に行ってみてねとコンパイラに伝えています。おかげでコンパイラはprintfを見たらstdio.hを参照して何をすべきか知れます。

「#include <stdio.h>」はprintf以外にもscanf、getcharなどC言語の基本的な関数を使うのに必要です。C言語でプログラミングするときはとりあえず書いておいてください

printf

「printf("Hello World!\n");」は画面に「Hello World!」と表示させるための文です。表示したい文字をカッコ内に入力し、ダブルクォーテーション「"」で囲みます

\nは改行してねという意味です。\nを入れた回数だけ改行されます。

printfの行の最後にはセミコロン「;」を書きます。C言語では文の最後にセミコロンを付けることで「ここが文の終わりだよ」と宣言します。セミコロンがないとコンパイル時にエラーが出ます。

例:

#include <stdio.h>
void main()
{
    printf("Hello\n\nWorld!");
}

実行結果

Hello

World!

メイン関数

「void main() { … }」はメイン関数といいます。プログラムはメイン関数から始める決まりになっています。

おゆ
もしメイン関数が書かれていなければコンパイラはどこから始めていいかわからずエラーになります。

実行内容は中カッコ「{ }」内に書きます。メイン関数内に書かれた文は上から順に実行されます。

#includeはプログラムを実行する前段階の準備です。Hello Worldではまず前準備として#includeを実行し、stdio.hファイルを参照すればいいんだと知ります。その上でメイン関数からプログラムが始まります。

例:

                                  //実行順
#include <stdio.h> //0(事前準備)
void main()               //1(プログラム開始)
{
    printf("1\n");         //2
    printf("2\n");         //3
    printf("3\n");         //4
}

実行結果

1
2
3

エラーが出たらどうする?

エラーメッセージの見方

コードに間違いがあるとエラーメッセージが出ます。

例えばprintfの行の最後にセミコロン「;」を付け忘れた場合は以下のエラーメッセージが出ます。

エラーメッセージ

1行目の「HelloWorld.c」はエラーが起きているファイル名です。「4:29」は4行目の左から29番目の文字がおかしいということを表しています。「error: expected ';' before '}' token」を訳すと「エラー:'}'記号の前には';'があるはずです」です。つまり「;」を付け忘れてますよと言っています。

2行目以降で実際のコードを使って「;」が来るはずの位置を「^」で示してあります。

他のエラーの場合もエラー文の構成は同じです。前半にエラーの位置と何がおかしいかの説明があり、後半に実際のコードを使ってどこがどうおかしいのか示してくれます。どこが間違っているかのヒントになるので積極的に参考にしてみてください。

エラーが出たら確認すること4つ

プログラミングにエラーはつきものです。エラー原因は様々ですが、C言語を始めたばかりの時にやりがちな間違いを挙げてみました。

実行前に保存したか

いくらエディタ上で編集しても保存していないと実行結果に反映されません。保存してから実行し直してみてください。

おゆ
「コードを変更したのに実行結果に反映されない!」というときは大抵これです。

VSCodeでは変更後の保存がされていない時はファイル名の横に白い丸が表示されます。
未保存

「;」を付け忘れていないか

C言語では基本的に文の最後にセミコロン「;」を付けます。今回の例の場合はprintfの行の最後に「;」を付けます。

全角文字を使っていないか

コメントまたはダブルクォーテーション「"」の間以外に全角スペースや全角文字が入っているとエラーの原因になります。すべて半角英数字で入力してください。

スペルミスがないか

意外とよくあるミスです。例えばprintfをprontfと書いてしまうなど…

まとめ:コードは暗記しなくていい

プログラミングで大事なのはコードを暗記することではなく、コードの意味を理解することだと思います。コードの書き方はググれば出てきますが、意味を理解していないと使いこなせません。数学でも公式を与えられただけでは問題は解けないですよね。意味も理解していて始めて問題が解けるようになります。

おゆ
本サイトではコードの意味までできるだけわかりやすく解説していきます。

初めは「言ってることはなんとなくわかるけどピンと来ない」状態かもしれませんが、そこまで理解できれば後は使っているうちにちゃんと身に付きます。ある程度理解したら練習問題を解き、どんどん進めていくのをおすすめします。

ブログランキング参加中。クリックしてもらえると励みになります。

ブログランキング・にほんブログ村へ

-C言語入門講座