第3講 数字を入れる箱を活用しよう

第6話 型変身(キャスト)
第5話問題解答例
#include<iostream>
using namespace std;
int main(){
  short a,b;     //a,bは短整数を入れる箱
  a=12;
  b=7;
  cout<<"a="<<a+0<<endl;
  cout<<"b="<<b+0<<endl;
  cout<<"a+b="<<a+b<<endl;
  cout<<"a-b="<<a-b<<endl;
  cout<<"a*b="<<a*b<<endl;
  cout<<"a÷b="<<
(float)a/(float)b<<endl;
}
実行結果
c++

ところで、
#include<iostream>
using namespace std;
int main(){
  short a,b;     //a,bは短整数を入れる箱
  a=12;
  b=7;
  cout<<"a="<<a+0<<endl;
  cout<<"b="<<b+0<<endl;
  cout<<"a+b="<<a+b<<endl;
  cout<<"a-b="<<a-b<<endl;
  cout<<"a*b="<<a*b<<endl;
  cout<<"a÷b="<<
(float)(a/b)<<endl;
}
でも正しい結果が得られると思いますか。
実験する前に結果を予想しましょう。
結果は例によって30行下。


























実験結果

入門
なんと
#include<iostream>
using namespace std;
int main(){
  short a,b;     //a,bは短整数を入れる箱
  a=12;
  b=7;
  cout<<"a="<<a+0<<endl;
  cout<<"b="<<b+0<<endl;
  cout<<"a+b="<<a+b<<endl;
  cout<<"a-b="<<a-b<<endl;
  cout<<"a*b="<<a*b<<endl;
  cout<<"a÷b="<<a/b<<endl;
}
のときと変わりません。
理由は簡単です。
前話において、同じ型同士の計算結果も同じ型になる事を学びました。
a/bを計算したときに、すでに整数への丸めが起きています。
1.7から小数部分を切り捨て1にすることを整数に丸めるというのです。
a/bの段階ですでに短整数に丸められて1になっているので、
(float)(a/b)は意味がないわけです。
ですから、面倒でも(float)a/(float)bとしなければならないのです。
また、
(float)((float)a/(float)b)は意味がないこともおわかりですね。
単精度実数同士の計算結果は、単精度実数型になっているので、
さらに単精度実数型に変身させる必要はないのです。

さて、次話の課題です。
単精度実数(float)型の箱を3つ用意して、
a×(b+c)
a×b÷c
(a+b)÷c
(a-b)×(a+c)
a×b+c÷a
(a÷2+c)×(b+a)
など様々な計算をさせてみましょう。
a、b、cに代入する値もいろいろ試しましょう。
2012
vc++


第5話へ 第7話へ

a

初心者のためのjava 入門 基礎から応用まで
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
VC++入門
VBA入門
専門用語なしのVBA入門
VB入門
初心者のためのEclipseによるJava入門