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

先頭へ戻る

この章の概要

この章の概要です。

最小の C++プログラム

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

int main()
{
}

実行結果:




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

C言語と同様、プログラムの開始位置となるので、main関数は必須です。 引数と戻り値の組み合わせは、以下のいずれかです。

コンパイラが独自に、他の形の 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

std::cout は標準出力ストリームを意味しており、 iostream という名前の標準ヘッダの中で定義されています。 C言語のファイル操作系の関数を使う際に、stdout(標準出力)を指定するのと同様で、 std::cout を使うことで、標準出力への出力であることを表しています。

std::endl は、改行文字を出力して、フラッシュを行うことを意味します。 こちらも、iostream という標準ヘッダで定義されています。
改行文字の出力だけを行いたければ、単に "\n" を使えば良いです。

<<演算子が使われていますが、もちろんシフト演算(C言語編第49章参照)をしている訳ではありません。 C++ では、演算子の機能をある程度書き換えることができるので(第21章参照)、 この機能を使って意味を変更しているのです。
このプログラムの場合、「"Hello, World" + 改行文字 + フラッシュするという指令」を、 標準出力ストリームへ「送る」ことを、<<演算子で表現しています。 「送る」を表現する演算子として、向きをイメージできる演算子が選ばれた訳です。 左方向へ送っているように見えますね?

コメント

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

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

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

以下は使い方の例を示したものです。

#include <iostream>

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

実行結果:

Hello, World


練習問題

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

Hello,
World

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


解答ページはこちら

参考リンク



更新履歴

'2017/7/3 新規作成。



前の章へ(第0章 はじめに)

次の章へ(第2章 C言語との差異)

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

Programming Place Plus のトップページへ


このエントリーをはてなブックマークに追加
rss1.0 取得ボタン RSS