KDOC 144: データ型によるサイズの違いを確かめる
この文書のステータス
- 作成
- 2024-05-01 貴島
- レビュー
- 2024-05-06 貴島
概要
データ型によって値を保存するのに使うサイズが違う、というのを概念でしか把握していなかった。アセンブリで本当にそうなのか確かめる。
違い
int型
↓2つめの宣言でアドレスが4バイト進んでるので、int型は4バイトの長さがある。
↓つまり、格納できる最大の値がわかる。オーバーフローさせてみる。2つめの宣言はゼロが入っている。
- 4バイト=32ビット=2^32=4294967296 -> 表現できる値の幅は4294967296。0はじまりなので0~4294967295
double型
↓2つめの宣言でアドレスが8バイト進んでいるので、double型は8バイトの長さがある。
- 名前の通り、int型の倍である8バイトの長さがある
float型
↓2つめの宣言でアドレスが4バイト進んでいるので、float型は4バイトの長さがある。
char型
↓2つめの宣言でアドレスが1バイト進んでいるので、char型は1バイトの長さがある。
- 1バイト=8ビット=2^8=256 -> 表現できる値の幅は256。0はじまりなので0~255
- 2つめの宣言ではオーバーフローしてゼロが入っている
関連
- KDOC 45: プログラミング言語の内部的な違いをアセンブリから調べる。アセンブリを見れば確認できるシリーズ
- KDOC 142: データセグメントの使い分けを試す。いくつかの型の値を入れて試してみたときに、そういえば知らなかったと考えた