6/4の計算結果は1と表示されるのはなぜでしょうか int型に格納された数値同士の計算結果はint型に格納されます。

てんC「マックスさん


先ほどのプログラムで

👇

#include <iostream>


using namespace std;


int main() {


cout << 6/4 << "\n";

cout << 7/4 << "\n";

cout << 8/4 << "\n";

cout << 9/4 << "\n";

cout << 10/4 << "\n";

cout << 11/4 << "\n";


return 0;

}


プログラムの実行結果


1

1

2

2

2

2


👆


6/4


などの整数値同士の割り算では


1.5


ではなく


1



整数値部分だけが表示されました。」


マックス「俺はこの結果に猛烈に満足している!」


てんC「はいっ


それは


6/4の


6と4は


計算前に


まず


コンピュータのメモリに


int型の形式(4バイト=32ビット)で格納されます。


ここから


どうして

cout << 6/4 << "\n";


により

6/4

の計算がおこなわれると


計算結果として

1.5ではなく

1が表示されるのかというと


同じ型の形式でメモリに格納されている数値同士の計算がおこなわれると


計算結果も


同じ型の形式でメモリに格納されるというシステム上の仕組みがあるからなのです。



int型の形式でメモリに格納されている数値同士の計算がおこなわれると


計算結果も


int型に格納され


doubleの形式でメモリに格納されている数値同士の計算が行われると


計算結果も


doubleの形式でメモリに格納されます


つまり


int型の形式でメモリに格納されている整数値同士の

足し算

引き算

掛け算

などでは

計算結果も

整数値になり

整数値を格納するint型の形式でメモリに格納されることになります


ですが


int型の形式でメモリに格納されている整数値同士の割り算


6/4のような

割り算では


計算結果に

1.25のように小数点以下の部分がでてきます。


その場合は


整数値データを格納するint型の形式では小数点以下の部分を


メモリに格納することができず


小数点以下の部分は切り捨てられ


int型の形式でメモリ格納することのできる


整数値部分の

1だけがメモリに格納されるというわけです。」


マックス「おおぅ そんなんなってるんかい


また 賢くなっちまったぜい(*^▽^*)」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る