C++ で簡単な計算を行ってみましょう.
コンピュータでは整数と実数(小数)を異なるものとして扱っています.詳しくは18.3 数値の符号化を参照することとして,ここではそれぞれの計算の仕方を学びます.
整数とその計算
C++ では,小数点を付けずに数値を書くと,整数として扱います.
整数も,前回と同じように cout で出力できます.次のコードを “integer.cc” という名前で保存して,前回と同様に実行してみましょう.
// integer.cc
#include <iostream>
using namespace std;
int main() {
cout << 3 << endl;
cout << -28 << endl;
}
以下のように出力されます.
./a.out
3
-28次に,整数の四則演算をしてみましょう.次のコードを “integer_arithmetic.cc” という名前で保存して,実行してみてください.
// integer_arithmetic.cc
#include <iostream>
using namespace std;
int main(){
cout << "-13 + 25 = " << -13 + 25 << endl;
cout << "21 - 2 = " << 21 - 2 << endl;
cout << "2 * 9 = " << 2 * 9 << endl;
cout << "7 / 3 = " << 7 / 3 << endl;
cout << "7 % 3 = " << 7 % 3 << endl;
}
C++ での加減乗除はそれぞれ “+”, “-“, “*”, “/” という記号で表します.なお,整数の計算での “/” は整数の範囲での章を計算します.その際,剰余は “%” という記号で表します.
./a.out
-13 + 25 = 12
21 - 2 = 19
2 * 9 = 18
8 / 3 = 2
8 % 3 = 1実数とその計算
C++ では,小数点を含む数値を書くと,実数(浮動小数点数)として扱います.
実数も,cout で出力できます.次のコードを “decimal.cc” という名前で保存して,前回と同様に実行してみましょう.
// decimal.cc
#include <iostream>
using namespace std;
int main() {
cout << 20.7 << endl;
cout << -3.5 << endl;
cout << 6.0 << endl;
}
以下のように出力されます.6.0 は 6 と表示されましたが,これは cout が自動的に小数点以下を省略して表示したからで,内部ではあくまで浮動小数点数として処理されています.
./a.out
20.7
-3.5
6次に,実数の四則演算をしてみましょう.次のコードを “decimal_arithmetic.cc” という名前で保存して,実行してみてください.
// decimal_arithmetic.cc
#include <iostream>
using namespace std;
int main(){
cout << "-10.2 + 24.3 = " << -10.2 + 24.3 << endl;
cout << "21.1 - 1.6 = " << 21.1 - 1.6 << endl;
cout << "2.3 * 8.9 = " << 2.3 * 8.9 << endl;
cout << "8.1 / 3.0 = " << 8.1 / 3.0 << endl;
}
加減乗除に用いる記号は整数と同じですが,”/” が実数の範囲での章を計算するようになり,剰余 “%” は使えません.
./a.out
-10.2 + 24.3 = 14.1
21.1 - 1.6 = 19.5
2.3 * 8.9 = 20.47
8.1 / 3.0 = 2.7整数と実数の計算
数式の中で整数と実数を混在させると,自動的に整数を実数に変換したうえで,結果を実数の範囲で計算します.
// arithmetic.cc
#include <iostream>
using namespace std;
int main(){
cout << "8 / 3.0 = " << 8 / 3.0 << endl;
cout << "0.02 * 25 = " << 0.02 * 25 << endl;
}
./a.out
8 / 3.0 = 2.66667
0.02 * 25 = 0.5カッコの使用
複雑な計算式を書くには,計算の順序を表現するカッコが不可欠です.C++ では, “(” と “)” を数式の中でのカッコに使います(大カッコや中カッコは使いません).例として,次の台形の面積を求めてみましょう.
// trapezoid.cc
#include <iostream>
using namespace std;
int main(){
cout << ((3 + 6) * 5) / 2.0 << endl;
}
カッコの部分が先に計算されます.ここでは,((上底 + 下底) * 高さ) までは整数の範囲で行い,小数になる可能性のある除算で初めて実数に変換されるようにしてみました.
./a.out
22.5