天国にいけるC言語入門 シーズン1 パソコン超初心者がゼロから東方風シューティングをつくる編 ver.0.4.15.790 RELIEF
🌳printf("%d",10);と記述された場合 この数値データ10は どのような形式でコンピュータのメモリに格納されているのでしょうか🌳
🌳printf("%d",10);と記述された場合 この数値データ10は どのような形式でコンピュータのメモリに格納されているのでしょうか🌳
🌳printf("%d",10);と記述された場合 この数値データ10は どのような形式でコンピュータのメモリに格納されているのでしょうか🌳
🌳ここで ソーラーが入り込んだ世界から もどって
マックスとソーラーに printf関数の第2引数について
いろいろ解説してもらいましょう。🌳
それでは
マックスさん よろしくおねがいします。
マックス「はい、はい わかった まっかせなさ~い😊」
ソーラー「は~い 一時 入り込んだ世界からもどってきました
ソーラーです
ただいま トラスト アンド フェイス 銀行で
コンピュータプログラムのメンテナンスをしています。」
マックス「入り込んだ世界で 楽しそうに やってるじゃないか?
このぉ😝」
ソーラー「本当 いいところなんだな ここが
マックスもきてみませんか?」
マックス「そうだな ぜひとも 俺もいってみたいな。
後ほど伺うとしよう」
ソーラー「いま
#include <stdio.h>
int main(void)
{
float a;
a=1.05;
printf("あなたの預金額はただいま%f円です。\n",10000*a);
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
10499.999523
このプログラムの実行結果を
10499.999523から15000と表示されるように
ぐっジョブCと遊んでいたところなんです。
このエピソードでは 一時 そこからはなれて
お話を進めていきたいとおもうんだ。
ちょっとしたおさらいも あったほうがいいんじゃないかなと
おもってね(*^^)v」
マックス 「なははははははは(´▽`)
そうか・・・
では・・・
printf("%d",10);と記述された場合
まず
文字列データ"%d"と数値データ10が
それぞれ別々のコンピュータのメモリに格納されてから
%d出力変換指定子のはたらきにより
文字列データ"%d"の%dの部分に10がはめこまれて
コマンドプロンプト画面に
プログラムの実行結果
10
とprintf出力表示されるのだろう
そうだったな ソーラー
ところで この整数値データ10は
どのような形で、コンピュータ内のメモリに格納されているんだ?」
ソーラー「待ってましたよ その言葉を ああっ麗しい☆☆☆
まちこがれていたんだ。 その言葉を・・
うるるん💦 うるるん💦
short
long
int
float
double
等
は
変数を格納する型だったよね
その変数が整数値を格納するなら
変数宣言において
short型
long型
int型
等
が
使用され
その変数が実数値を格納するなら
変数宣言において
float
double型
等
が
使用されるいうわけなんだね。
ところで
このように👇 printf関数の第2引数に直接 整数値が記述された場合
printf("%d",10);
👆
このprintf関数の第2引数である整数値10 は
自動的に
short
long
int
float
double
などの様々な
変数を格納する型のうちの1つである
整数値を格納する変数の変数宣言をおこなうint型を用いて
つまり 整数の型int型の形式をもちいて
コンピュータのメモリに格納されていきます。
次に
このように👇 printf関数の第2引数に 実数値が記述された場合
printf("%f",2.8478);
👆
この実数値2.8478 は
自動的に
実数値を格納する変数の変数宣言をおこなうときに用いられるdouble型を用いて
つまり 実数の型double型の形式をもちいて
コンピュータのメモリに格納されていきます。
そうだね。
なぜ このような仕組みになっているのかというと
メモリに格納された整数値10のprintf出力表示を行うのに
次のプログラムのように
👇
#include <stdio.h>
int main(void)
{
int a;
a=10;
printf("%d\n",a);
return 0;
}
👆
自分で
aのint型の変数宣言、初期化を行い
数値10をint型の変数aに格納してから
printf関数の第2引数に変数aを記述し
変数aに格納されている数値10をprintf出力表示させるのは
(変数宣言、初期化をおこなうので)手間がかかりますから
printf("%d",10);
のような
プログラムの表記法が考え出されたのかもしれませんね。
あるいは
逆に
最初
printf("%d",10);
のような表記法が考え出されたんだけど
このままでは
10の部分は固定化されて変更できないので
10の部分の値を簡単に変更できるように
int a;
a=10;
printf("%d\n",a);
のような変数をもちいるシステムが生み出されたのかもしれませんね」
マックス 「
printf("%d",10);
の中の10は
整数の型int型の形式で
printf("%f",2.8478);
の中の2.8478は
実数の型double型の形式で
コンピュータのメモリに格納されていたのか・・・
そうだったのか・・・
やるじゃないか ソーラー」
ソーラー 「いやあ ははははは(´▽`)
このprintf関数の第2引数に記入された整数値を格納する
int型は
-2147483648~2147483647までの
範囲にある整数値を格納することができます。
ということは
🍅printf("%d",整数値);
の形式で
直接整数値をprintf文の第2引数に書き込んだ場合
printf出力表示できる整数値は
int型に格納できる数値の範囲である
-2147483648~2147483647までの値となるんです。🍅
同様に
このprintf関数の第2引数に記入された実数値を格納する
double型はfloat型よりも大きな値を格納することができ
正の数においては
float 3.4×(10の-38乗)から3.4×(10の38乗)
double 1.7×(10の-308乗)から1.7×(10の308乗)
の範囲にある実数値を格納することができます。
ということは
🍅printf("%f",実数値);
の形式で
直接 実数値をprintf関数の第2引数に書き込んだ場合
printf出力表示できる実数値は
double型で格納できる数値の範囲である
1.7×(10の-308乗)から1.7×(10の308乗)までの値となります。🍅
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます