天国にいけるC言語入門 ヘキサ構造体 ver5.2130
printf("%d¥n", 1);が実行されると数値データ1は自動的にint型の形式で 数値データ1.0ならdouble型の形式で自動的にメモリに格納されます printf関数の基本的な仕組みです
しゃお~ん 基本事項の確認にゃん🐈int a=1; の実行においては int型の形式でメモリに格納された数値データ1 がint型の変数aに格納されることになります
printf("%d¥n", 1);が実行されると数値データ1は自動的にint型の形式で 数値データ1.0ならdouble型の形式で自動的にメモリに格納されます printf関数の基本的な仕組みです
printf("%d\n", 1);が実行されると
数値データ1は自動的にint型の形式で
数値データ1.0ならdouble型の形式で
自動的にメモリに格納されます
printf関数の基本的な仕組みです
ソーラー「今日は
😊とってぇ~も😊
基本的で根本的なprintf関数の仕組みについて学んでみたいとおもいます」
アレサ「基本的で根本的なprintf関数の仕組みについてですの?
ソーラーさん」
ソーラー「そうなんだよ
まずは
次のプログラムをごらんください」
👇
#include<stdio.h>
int main(void)
{
printf("%d\n", 1);
return 0;
}
ビルド実行結果
1
ソーラー「登場したね
基本的なプログラムだね😊
このプログラムでは
printf("%d\n", 1);
の実行により
コマンドプロンプト画面に
1
が表示されています
printf("%d\n", 1);
が実行されるとき
整数値データ1 は
💖自動的に💖
💖int型の形式でメモリに💖
格納されることになるんだよ
printf("%d\n", 1);
が実行されるとき
1
が
int型に格納されるよう指定したわけではないんだけどね(*´ω`*)
prinf関数の基本的な仕組みというわけだね」
アレサ「ソーラーさん
printf("%d\n", 1);
が実行されるとき
まず
数値データ1が
💖int型の形式でメモリに💖
格納されてから
コマンドプロンプト画面に1が表示されるということなのですか?」
ソーラー「そうなんだよ
まず
数値データ1が
💖int型の形式でメモリに💖
格納されてから
というのがポイントだね
メモリに格納されたデータを
コンピュータは利用しているというわけなんだ」
アレサ「ソーラーさん
では
printf("%d\n", 100);
が実行されるときは
100は
自動的に
int型の形式でメモリに格納されるのでしょうか?」
ソーラー「そうなんだ
基本的に
整数値データは
int型の形式でメモリに格納されることになります」
ソーラー「それでは
次のプログラムを見てほしいな」
👇
#include<stdio.h>
int main(void)
{
printf("%f\n", 1.0);
return 0;
}
ビルド実行結果
1.000000
ソーラー「このプログラムでは
printf("%f\n", 1.0);
が実行されて
コマンドプロンプト画面に
1.000000
が表示されています
このとき
実数値データ1.0 は
💖自動的に💖
💖double型の形式でメモリに💖
格納されることになるんだよ
double型の形式というのがポイントだね
これもprintf関数の基本的な仕組みなんだ」
アレサ「
整数値データ1はint型の形式で
実数値データ1.0はdouble型の形式で
メモリに格納されるのですね」
ソーラー「ここで
ちょっと遊んでみようかな
今のプログラムの
%f出力変換指定子を
%d出力変換指定子に
変更してプログラムを実行してみるよ~ん
そのプログラムはこちらです」
👇
#include<stdio.h>
int main(void)
{
printf("%d\n", 1.0);//%f出力変換指定子を%d出力変換指定子に変更しました
return 0;
}
警告 C4477 'printf' : 書式文字列 '%d' には、型 'int' の引数が必要ですが、可変個引数 1 は型 'double' です
が表示されて
コマンドプロンプト画面には
0
が表示されます
書式文字列 '%d' には、型 'int' の引数が必要です
が表示されているね
このことは
printf
の第1引数が
%d出力変換指定子の場合
第2引数に
用いられるのは
int型の形式でメモリに格納されるデータ
すなわち
整数値データ
もしくは
整数値データを格納するint型の変数でなければならないことを示しています」
アレサ「よく観察すると
実数値データ1.0を表示するのに
%f出力変換指定子を用いずに
%d出力変換指定子を用いたためでしょうか
1.0でなく
0
がコマンドプロンプト画面に表示されています」
ソーラー「そうなんだ
そして
ちょっと警告文に注目してみてよ
👇
警告 C4477 'printf' : 書式文字列 '%d' には、型 'int' の引数が必要ですが、可変個引数 1 は型 'double' です
その中の
可変個引数 1 は型 'double' です
に着目してみるよ
まず
可変個引数とは何かということだよね」
アレサ「可変個引数・・・ですか
引数の数を変化させることが可能ということですか??」
ソーラー「そうなんだよ
printf関数を用いる場合
書式は
printf("%d\n", 1);
のように記述されるよね
一般に
printf関数を用いる場合
ダブルクォーテーション" "で囲まれた第1引数の部分は
以下のように必ず記述する必要があります
printf("第1引数は必要です");
つまり
printf関数には必ず1個の引数が存在することになります
また
printf関数を用いる場合
printf("%d\n,%d\n,%d\n", 1,2,3);
のように記述することもできます
ダブルクォーテーション" "で囲まれた第1引数の部分は絶対に必要ですが
第2引数 1
第3引数 2
第4引数 3
の部分は
その時の状況によって
必要だったりしなかったりします
引数の数が変化するというわけだね
だから
第2引数 1
第3引数 2
第4引数 3
は
可変個引数というんだね
さて
可変個引数 1 は型 'double' です
とは
printf("%d\n", 1.0);
の
可変個引数である
1.0
が
double型の形式でメモリに格納されていることを表しているんだよ
printf("%d\n", 1.0);
が実行されると
実数値データ1.0
は
自動的に
double型の形式でメモリに格納されているんだね」
アレサ「この警告文にはそのような意味があったのですね」
アレサ「ソーラーさん
int型の形式では
-2147483648から2147483647までの整数値データを
メモリに格納することができますが
2147483647
よりも大きな整数値データ
10000000000
を
printf("%d\n", 10000000000);
のように記述した場合
この数値データ10000000000
は
どの型の形式でメモリに格納されることになるのですか?」
ソーラー「ははっアレサ
ナイスでタイムリーな質問だね
では
printf("%d\n", 10000000000);
が記述されたプログラムを実行してみようかな」
👇
#include<stdio.h>
int main(void)
{
printf("%d\n", 10000000000);//%f出力変換指定子を%d出力変換指定子に変更しました
return 0;
}
警告文
警告 C4477 'printf' : 書式文字列 '%d' には、型 'int' の引数が必要ですが、可変個引数 1 は型 '__int64' です
が表示されて
コマンドプロンプト画面に
1410065408
が表示されます
ソーラー「この場合
数値データ10000000000は
__int64型に格納されているんだよ
だけど
%d出力変換指定子では
__int64型に格納された数値データを
ただしく
コマンドプロンプト画面に
表示することはできないので
コマンドプロンプト画面に
1410065408
が表示されているんだね
ところで
__int64型
とは
見たことのない型だね
__int64型
とは
Microsoft社によって独自に開発されたデータを格納する型のことなんだよ
他にも
__int8
__int16
__int32
等のデータを格納する型があるんだよ
ちょっと見たことのない型だね
__int8は1バイトのデータ格納容量をもちますので
char型に相当し-128 ~ 127までの整数値データを格納することができます
__int16は2バイトのデータ格納容量をもちますので
short型に相当し-32,768 ~ 32,767までの整数値データを格納することができます
__int32は4バイトのデータ格納容量をもちますので
int型に相当し-2,147,483,648 ~ 2,147,483,647までの整数値データを格納することができます
そして
__int64は8バイトのデータ格納容量をもちますので
long long型に相当し-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807までの整数値データを格納することができます
」
アレサ「__int64なら約922京までの整数値データを格納できるのですか
それなら
それよりずっと小さい10000000000なら十分に格納可能ですの(*^^*)」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます