CとC++の違い
情報オリンピック本選ではC++またはJavaを使うことになっている。C++はCの(ほぼ)上位互換なので,Cの(まともな)プログラムはC++のプログラムとしても通用する。CのプログラムをC++のコンパイラ(g++とか)でコンパイルしても問題ない。情報オリンピックの本選で g++ を使って採点すると書いてあってもCの文法の範囲で問題ないはず。 Cの例(gccでもg++でもコンパイルできる)
code:test.c
int main(void)
{
double x;
scanf("%lf", &x);
printf("%g\n", x);
return 0;
}
CではないC++の例(g++でコンパイルできる)
code:test.cc
int main()
{
double x;
std::cin >> x;
std::cout << "x = " << x << std::endl;
}
つまり
main() の引数の void とか最後の return 0; とかは不要
コンソール入力は std::cin >> コンソール出力は std::cout << を使う。行末は std::endl
コンパイル:
g++ test.cc
次のように using namespace std; を使うと std:: が省略できる:
code:test2.cc
using namespace std;
int main()
{
double x;
cin >> x;
cout << "x = " << x << endl;
}
しかし,せっかく名前空間に分かれているものをばらすのはよくないという考え方がある。
なお,#include <bits/stdc++.h> と書いておけば標準のヘッダがすべてインクルードされるという便利な機能は,本物の gcc だけで使えるもので,Macで gcc コマンドで呼び出されるClang等では使えない。