C++編【言語解説】 第1章 Hello, Worldプログラム

この章の概要

この章の概要です。

関連する話題が、以下のページにあります。

最小の C++プログラム

まずは、C++ の最も小さなサンプルプログラムを取り上げます。

int main()
{
}

実行結果:




C++ として有効な最も小さいプログラムは、上記のようになります。 実行しても何もせずに終了します。

C言語と同様、処理の開始点は main関数になるので、これは必須です。 引数と戻り値の組み合わせは、

のいずれかです。
仮引数が空になっているのは、C言語において void を指定していたときと同じ意味です。 このように C++ では、仮引数の void は省略できます。 void と明示的に書いても構いませんが、一般的に C++ では省略します。
引数がある方の main関数の意味は、C言語編第45章を参照して下さい。

また、C++ では、main関数内の return文は省略でき、 省略した場合は、関数の末尾に return 0; と書いたときと同じ結果になります。
これは一般的とまでは言えないと思いますが、本サイトの C++プログラムでは省略することにします。

Hello, Worldプログラム

今度は、C++ での Hello, Worldプログラムを作ってみましょう。 C言語での Hello, Worldプログラムについては、C言語編第2章で説明しています。

まず、C++ は、C言語の機能が使えるので、C言語と同じような書き方で作ることができます。

#include <stdio.h>

int main()
{
	puts("Hello, World");
}

実行結果:

Hello, World

しかし、C++ では stdio.h を #include するという行為自体が、あまり一般的ではありません。 通常、次のように書きます。

#include <cstdio>

int main()
{
	std::puts("Hello, World");
}

実行結果:

Hello, World

この違いについての詳しい解説は、【標準ライブラリ】第1章を参照して下さい。


さて、更に言えば、C++ では新しい入出力機能が存在していますから、それを使うのが C++らしい書き方です。 その方法で書き換えると次のようになります。

#include <iostream>

int main()
{
	std::cout << "Hello, World" << std::endl;
}

実行結果:

Hello, World

<<演算子が使われていますが、もちろんシフト演算(C言語編第49章参照)をしている訳ではありません。 C++ では、演算子の機能をある程度書き換えることができるので、この機能を使って意味を変更しているのです(第19章参照)。
また、std::cout は標準出力ストリームを意味しており、std::endl は改行文字+フラッシュを意味します。 これらを使うためには、iostream というヘッダを #include する必要があります。

このプログラムの場合、イメージとしては、「"Hello, World" + 改行文字 + フラッシュするという指令」を標準出力ストリームへ送っているということです。 どこかへ「送る」というイメージを、<<演算子で表現している訳です。 左方向へ送っているように見えますね?

この機能に関するもう少し詳しい解説は、第5章で行います。

コメント

C++ では、C言語(C95まで) の /* 〜 */ という形式のコメントのほかに、// 形式のコメントが使えます。 (C言語でも C99規格からは使えます)。

// 形式のコメントは、「//」からその行の行末までをコメント化します。 複数行をまとめてコメントにすることができませんが、いちいち終端の記号を書かなくて良くなります。 大抵のコメントは、1行で完結するので、入力の手間が減らせます。

#include <iostream>

int main()
{
	// 下の文は、puts("Hello, World"); と同じ結果になる
	std::cout << "Hello, World" << std::endl;
}

実行結果:

Hello, World

C++プログラマのほとんどは、複数行をまとめてコメントアウトしたり、文の途中を部分的にコメントアウトしたりするのでなければ、 //コメントの方を使います。

複数行のコメントアウトには、#if 0 〜 #endif を使った方が、ネストの間違いを防げて良いとも言われています。


練習問題

問題@ iostreamヘッダの機能を使う形で、実行結果が次のようになるプログラムを作成して下さい。

Hello,
World

問題A コマンドライン引数を1行に1つずつ、標準出力へ出力するプログラムを作成して下さい。


解答ページはこちら

参考リンク

更新履歴

'2013/2/11 新規作成。



前の章へ

次の章へ

C++編のトップページへ

Programming Place Plus のトップページへ