最近C++を触り始めたので基本的なことをメモとして残します。
Hello Worldの出し方
何はともあれ入り口としてのHello World
エディタで以下のように書き、
# include <iostream>
using namespace std;
int main(){
cout << "Hello World!!" << endl;
return 0;
}
ターミナル/コマンドプロンプトでファイルのあるディレクトリまで移動して、
g++ -o hello.exe hello.cpp
と叩くとhello.cppがhello.exeにコンパイルされます。
その後同じディレクトリにて、
./hello.exe
とコマンドを入力すると...
Hello World!!
これでOKですね。
Hello Worldの中身解説
それぞれの要素に分解して見ていきましょう。
まず、最初の
# include ...
ですが、
...の部分にあるヘッダファイルをインクルードすることによってライブラリを利用します。
この場合はmain関数の中にある
cout,endl
を利用するために
# include <iostream>
としてiostreamをインクルードします。
次に、main関数を宣言します。
int main(){
C++において、関数は返り値、関数名(引数)、{手続き}、という形で関数を定義します。
この場合は intという返り値で、mainという関数、()の中が空白なので引数はなし、{}の中身についてはこれから解説していきます。
また、インクルード文の直後にある
using namespace std;
についてですが、
C++という言語は名前空間というものを持っており、例外もあるのですが、基本的に標準ライブラリはstd名前空間に含まれます。
coutやendlもこの名前空間に含まれるので、本来は
std::cout << "Hello, World" << std::endl;
と書かなければなりません。
cout << "Hello World!!" << endl;
しかし、例えば競技プログラミングなどの競技性が高いものにおいてこのように記述するのは冗長で時間の無駄なので、上記のように書いています。
なので、ググった時に出てくる競プロ勢のコードなどでは上記のような書き方をしているはずです。
そして最後の
return 0;
}
についてですが、main関数においては慣例的に、return 0という表記をしています。
※10/12修正
C++において、戻り値なしのreturnや関数末尾のreturn省略は「return 0;」と同じ扱いとなっており、
こちらは誤りでした。
コメント欄のご指摘通り、
main関数内でreturnが省略された場合のみ、main関数は暗黙的に0を返すとみなされます
それ以外の場合、戻り値がある関数でreturnが省略された場合の動作は未定義動作になります
とのことです。
ご指摘ありがとうございました。