第2回|はじめてのCプログラムを書く:Hello, Worldで基本構文を理解する

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。

第2回|はじめてのCプログラムを書く:Hello, Worldで基本構文を理解する

はじめてのC言語 | 第2回

目次

はじめに

前回は、C言語がどのような位置づけの言語なのかを整理しました。

今回は、実際にC言語のプログラムを1つ作成し、macOSのターミナルでコンパイルして実行します。

目的は、次の3点です。

  • Cプログラムの最小構成を理解する
  • コンパイルと実行の流れを体験する
  • main、printf、return の意味を正確に押さえる

最初に作るプログラム

ソースコード

hello.c という名前で、次の内容を保存します。

#include <stdio.h>

 int main(void) {
     printf("Hello, World!\n");
     return 0;
}

実行環境

前提

この記事は macOS と zsh を前提にしています。

コンパイラの確認

ターミナルで次のコマンドを実行します。

clang --version

clang version … のように表示されれば、コンパイラは利用できます。

実行手順

1. 作業用ディレクトリに移動する

たとえばデスクトップで作業する場合は、次を実行します。

cd ~/Desktop

2. ソースファイルを作成する

エディタで hello.c を作成し、先ほどのコードを保存します。

3. コンパイルする

次のコマンドを実行します。

clang hello.c -o hello

このコマンドは、hello.c をコンパイルして、hello という実行ファイルを作成します。

4. 実行する

./hello

実行結果:

Hello, World!

コードの読み方

#include <stdio.h>

printf を使うために必要な標準入出力ライブラリを読み込みます。これがないと、printf の宣言が見つからず、警告やエラーの原因になります。

int main(void)

main は、プログラムの開始地点となる関数です。C言語のプログラムは通常ここから実行されます。

  • int は戻り値の型
  • void は引数を受け取らないことを意味する

{ }

波かっこは、関数の処理範囲を表します。main 関数の中に書いた処理が、上から順に実行されます。

printf(“Hello, World!\n”);

文字列を画面に表示する命令です。

  • printf は表示用の関数
  • “Hello, World!\n” は表示する内容
  • \n は改行
  • 行末の ; は文の終わり

return 0;

プログラムが正常終了したことをOSに伝えます。C言語では、main の終了時に終了状態を返します。

  • 0 は通常「正常終了」
  • 0 以外は異常終了を表すことが多い

初心者が最初に覚えるべき基本ルール

文の最後には ; を付ける

C言語では、多くの文の終わりにセミコロンが必要です。

例:

printf("Hello, World!\n");
return 0;

大文字と小文字は区別される

main と Main は別物です。printf も Printf では動きません。

文字列はダブルクォーテーションで囲む

文字列は “…” で書きます。

printf("Hello, World!\n");

よくあるエラー

clang: error: no such file or directory: ‘hello.c’

原因: hello.c が存在しない場所でコンパイルしている可能性があります。
対処: pwd や ls で現在のディレクトリとファイル名を確認します。

pwd
ls

zsh: no such file or directory: ./hello

原因: コンパイルに失敗して hello が作られていない。実行ファイル名が違う。
対処: まずコンパイル結果を確認し、ls で hello があるか確認します。

expected ‘;’

原因: 文末の ; が抜けています。
対処: 直前の行の終わりを確認します。

試しに少しだけ変更してみる

表示内容を変える

#include <stdio.h>

int main(void) {
     printf("Hello, C!\n");
     return 0;
}

再度コンパイルして実行します。

clang hello.c -o hello
./hello

改行を消すとどうなるか

#include <stdio.h>

int main(void) {
     printf("Hello, World!");
     return 0;
}

この場合、表示後に改行されません。

ターミナルでは、次のプロンプトが同じ行に続いて見えることがあります。そのため、基本的には \n を付けるほうが分かりやすいです。

ここで理解しておくべきこと

C言語は書いたらすぐ実行するわけではない

C言語では、次の順番で進みます。

  • ソースコードを書く
  • コンパイルする
  • 実行する

Pythonのようなインタプリタ型言語とは、この点が大きく異なります。

main が入口になる

今後どのプログラムを書く場合も、基本は main から始まります。
最初は「Cプログラムは main から動く」と覚えておけば十分です。

まとめ

今回のポイントは次のとおりです。

  • Cプログラムの基本形は #include、main、処理、return 0; で構成される
  • printf を使うと文字列を表示できる
  • clang でコンパイルし、./hello で実行する
  • セミコロン、ファイル名、実行ファイル名の確認で多くの初歩的なミスを防げる

次回予告

次回は、C言語で変数を使います。
整数を保存して表示しながら、次の内容を整理します。

  • 変数とは何か
  • int の意味
  • 値を代入する方法
  • printf で数値を表示する方法

復習してみよう

復習したい方は、こちらもあわせてご覧ください。

用途ごとに選ぶ C言語のおすすめ本

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次