一、最小のC++プログラム
int main() // 最小のC++プログラム
{
} Code language: JavaScript (javascript)
- このコードは引数を持たず、内部処理を一切実行しない
main関数を定義しています。 - 左波括弧{はmain関数本体の開始、右波括弧}は関数本体の終了を意味し、実行するコードは{}の中に記述します。
- 二重スラッシュ
//は1行コメントで、//から行末までの文字列は人間が読むだけの情報であり、コンパイラは無視します。 - 完全なC++プログラムにはグローバルな
main()関数が必ず1つだけ存在しなければならず、プログラムはmainから実行が始まります。 intは関数が整数値を返すことを示します。関数内で0を返すと正常終了、0以外を返すとエラー発生となります。- 5番で述べた戻り値はUnix/Linuxシステムが読み取りますが、Windowsプログラムではほとんど使用されません。
二、標準出力 Hello World 完全サンプル
#include <iostream>
int main()
{
std::cout << "Hello, World!\n";
}Code language: C++ (cpp)
#include <iostream>:コンパイラに標準入出力ストリームライブラリの宣言を読み込むよう指示します。この行がないとstd::coutによる出力文が認識されません。
iostreamは先ほど紹介した標準ライブラリの一つで、コンパイラに標準搭載されたC++製コードです。コンソールへの文字出力など、入出力関連の処理に使用します。
<<出力演算子:右辺の内容を左辺の出力オブジェクトstd::coutに書き出します。本サンプルでは文字列"Hello, World!\n"を標準コンソール(CMDターミナル)に出力します。- “Hello, World!\n” は文字列リテラル:二重引用符で囲まれたテキスト。エスケープ文字
\nは改行を意味し、出力後カーソルが次の行へ移動します。 std:::名前空間修飾子で、coutが標準ライブラリstd配下の部品であることを示します。後ほどusing namespace std;を紹介し、std::接頭辞を省略して直接coutを使う方法を解説します。
名前空間修飾子の役割は同名衝突を防ぐため、ライブラリに専用の接頭辞を付けることです。例えばクラス内に同姓同名の生徒が二人いる場合、先生が「ジェイソン1」「ジェイソン2」と区別するラベルを付けるように、stdも同じ役割を持ちます。
完全なサンプル
下記のサンプルには追加の関数が2つ定義されています。main関数から一方の関数を呼び出し、その関数がさらにもう一方の関数を呼び出す仕組みです。円の面積を計算するプログラムで、半径を指定すると面積を出力します。
#include <iostream>
using namespace std; // std名前空間を導入すると、以降std::を省略可能
// 円面積計算
double circle_area(double x)
{
return 3.14 * x * x;
}
// 円面積を出力
void print_circle_area(double r)
{
cout << "The area of circle with radius " << r << " is " << circle_area(r) << "\n";
}
int main()
{
print_circle_area(2.0); // 半径2、円面積を出力
return 0;
}Code language: C++ (cpp)
実行結果
The area of circle with radius 2 is 12.56Code language: JavaScript (javascript)
cout は << を連鎖させて複数の内容を連続出力できます。\nを記述しないとすべて同じ行に出力されます。文字列リテラル以外に、double型の変数rなど各種変数も出力可能です。
void print_circle_area(double r) の括弧内(double r)は引数です。引数とは外部から関数内部に渡す値を受け取る変数のことです。main内で print_circle_area(2.0); を実行すると2.0が渡され、関数内のrは2.0となります。続くcoutではテキスト、変数r、circle_area(r)の実行結果を順に出力します。このときrの値2.0が double circle_area(double x) のxに渡され、x=2.0となり3.14*2*2=12.56が計算され、returnで呼び出し元へ戻ります。実行時の動作は下記コードと同等です。
cout << "The area of circle with radius " << r << " is " << 12.56 << "\n";Code language: C++ (cpp)
出力完了後、}によりprint_circle_area関数が終了し、処理がmain関数へ戻ります。
