天国にいけるC言語入門 シーズン1 パソコン超初心者がゼロから東方風シューティングをつくる編 ver.0.4.15.790 RELIEF
int型の変数を使ってメモリに格納できる整数値の最大値は2147483647です %d出力変換指定子を使って変数を使わず直接printf出力表示できる整数値の最大値も2147483647となります
int型の変数を使ってメモリに格納できる整数値の最大値は2147483647です %d出力変換指定子を使って変数を使わず直接printf出力表示できる整数値の最大値も2147483647となります
int型の変数を使ってメモリに格納できる整数値の最大値は2147483647です %d出力変換指定子を使って変数を使わず直接printf出力表示できる整数値の最大値も2147483647となります
さてと
こちらはトラスト アンド フェイス銀行システム
改善作業をしているソーラーさん。
ソーラー 「そうか・・
char型の変数😊 英数字1文字または数値-128~127までの整数値を格納できます
int型の変数😊 -2147483648から2147483647までの整数値を格納できます
long型の変数😊 -2147483648から2147483647までの整数値を格納できます
float型の変数😊は
-3.4×(10の38乗)から- 3.4×(10の-38乗)までの実数値
0
3.4×(10の-38乗)から3.4×(10の38乗)までの実数値を格納できます
double型の変数😊は
-1.7×(10の308乗)から-1.7×(10の-308乗)までの実数値
0
1.7×(10の-308乗)から1.7×(10の308乗)までの実数値を格納できます
float型やdouble型の変数は極端におおきな数値を格納できるんだね。
まあ、当然なのかな。
最近の科学計算においては桁数のおおい
数値計算多そうだし・・・
ためしに
int型の変数aに格納される値を1700000
として
int a=1700000;
として・・」
#include <stdio.h>
int a=1700000;
int main(void)
{
printf("%d\n",a);
return 0;
}
ソーラー
「このプログラムをコンパイルすると・・」
プログラムの実行結果(EAZY IDECの場合)
プログラムの実行結果(Visual Studioの場合)
1700000
続行するには何かキーを押してください_
ソーラー「あああっ」
ぐっジョブC「??」
ソーラー
「ピンポ~ン❕ 来た北ア ちゃんと
int型の変数 aに収められた数値1700000がprintf出力表示されてる💖」
ぐっジョブC
「そうなのぉ、変数aに格納された値1700000は
int型の変数に格納できる数値の範囲 -2147483648から2147483647に
おさまっているからちゃんとprintf出力表示されているみたいだね。」
ソーラー 「では、
int型の変数で格納できる数値の最大値
2147483647ではどうかな?ちゃんとprintf出力表示できるかな?。」
次のプログラム
#include <stdio.h>
int a=2147483647;
int main(void)
{
printf("%d\n",a);
return 0;
}
をうちこむソーラー。
ソーラー 「コンパイルっ。」
プログラムの実行結果(EAZY IDECの場合)
プログラムの実行結果(Visual Studioの場合)
2147483647
続行するには何かキーを押してください_
おおっすごい。
ちゃんと数値がただしくprintf出力表示されてる。
では
int型の変数に格納できる数値の範囲 -2147483648から2147483647に
おさまりきらない数値
11111111111などを
変数aに格納してプログラムを実行すると ど~なるかな?
#include <stdio.h>
int main(void)
{
int a=11111111111;
printf("%d\n",a);
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
-1773790777
プログラムの実行結果(Visual Studio2018の場合)
警告 C4305 '初期化中': '__int64' から 'int' へ切り詰めます。 Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 3
警告 C4309 '初期化中': 定数値が切り捨てられました。 Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 3
と表示されますが
プログラムを実行すると
-1773790777が実行されます。
プログラムの実行結果(Visual Studio2019の場合)
警告 C4309 '初期化中': 定数値が切り捨てられました。 Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 3
警告 C4305 '初期化中': '__int64' から 'int' へ切り詰めます。 Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 3
と表示されますが
プログラムを実行すると
-1773790777が実行されます。」
ソーラー「やっぱりint型の変数には格納できる数値の範囲があるんだね
それを超えた値をint型の変数に格納しprintf出力表示するとおかしな結果がでてくるんだね」
ぐっジョブC 「そうだね。ソーラー。」
ともに喜ぶぐっジョブC。
ソーラー「
私たちは
以前のエピソードで マックスが調べたので
printf関数の第2引数に
printf("%d\n",111000);
のように
😊直接、数値入力したときに😊
その数値がそのまま正しくprintf出力表示される入力数値の桁数は
最大9桁(一部10桁まで)としっているけど・・・
正確には
どの数値が
直接printf出力表示できる最大値かまではしらなかったんだよね~」
ぐっジョブC 「そのとおり。」
ソーラー 「でも
ぐっジョブCの
🍓int型の変数が格納できる最大値は2147483647🍓の記述から
多分
🍓printf関数の第2引数に変数を用いないで
直接、整数値を入力したときに
正しくprintf出力表示できる入力数値の
最大値も2147483647となる🍓のが予想されるよね
実際にためしてみよっか。
👇
#include <stdio.h>
int main(void)
{
printf("%d\n",2147483647);
return 0;
}
をうちこむソーラー。
ソーラー「さあて コンパイルっ!」
プログラムの実行結果
(EAZY IDECの場合)
(Visual Studioの場合)
2147483647
でだしは上々ってところだね
やっぱりちゃんと表示されたね
次は
int型の変数の格納できる数値の範囲の最大値である
2147483647
に
214748364
printf("%d\n",2147483648);
を実行することにより
表示されるかためしてみるね。
もし
プログラムの実行結果に
変な結果が表示されたら
printf関数の第2引数に直接 数値を代入して
%d出力変換指定子をつかって表示できる数値の最大値は
2147483647
となるよね。
そのプログラムはこちらです
👇
#include <stdio.h>
int main(void)
{
printf("%d\n",2147483648);
return 0;
}
プログラムの実行結果(Visual Studio2019の場合)
警告 C6328 サイズの不一致: '__int64' が _Param_(2) として渡されました。'int' が 'printf' への呼び出しに必要です。 Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 5
警告 C4477 'printf' : 書式文字列 '%d' には、型 'int' の引数が必要ですが、可変個引数 1 は型 '__int64' です Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 5
と表示されますが
-2147483648
C:\Users\solar\source\repos\Project2\Debug\Project2.exe (プロセス 2124792) は、コード 0 で終了しました。
このウィンドウを閉じるには、任意のキーを押してください...
と表示されます
ソーラー「
2147483648
が表示されなければならないのに
-2147483648
が表示されたね
printf("%d\n",2147483647);
を実行して
2147483647
は表示できて
printf("%d\n",2147483648);
を実行して
2147483648
は表示できないみたいだね
これで
🍓printf関数の第2引数に変数を用いないで🍓
🍓直接、整数値を入力したときに🍓
正しくprintf出力表示できる入力数値の
最大値も
printf関数の第2引数に変数を用いた場合と同じ
2147483647となるのがわかったね
int型の変数の格納できる数値の範囲は
-2147483648から2147483647
ナイス情報だね。
いいデータをありがとう。
ぐっジョブC。
この情報がなかったら
🍓printf関数の第2引数に変数を用いないで🍓
🍓直接、整数値を入力したときに🍓
正しくprintf出力表示できる入力数値の
最大値が
2147483647となるのはわからなかったよ」
ぐっジョブC 「いや。いや、僕はなにもしてないよ。
ただ
僕のサイトにかいてあるだけだよ・・・ 」
うれしそうなサイト、ぐっジョブC
🌳🌳🌳🌳🌳
ここで
printf関数の第2引数に
直接、整数値入力するとは
👇
#include <stdio.h>
int main(void)
{
printf("%d\n",10000);
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
プログラムの実行結果(Visual Studioの場合)
10000
👆
このプログラムのように
整数値10000を
直接printf( )の第2引数に
かきこむことを指しています
それに対し
変数aを媒介するときとは
👇
#include <stdio.h>
int main(void)
{
int a=10000;
printf("%d\n",a);
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
プログラムの実行結果(Visual Studioの場合)
10000
👆
このプログラムのように変数aをとおして
10000をprintf表示する方法を指しています。
😊実は😊
printf("%d\n",10000);
と記述された場合は数値10000は
自動的に変数の型😊int型の形式😊を用いてメモリに格納されることになります
solarplexussより)
🌳🌳🌳🌳🌳
ソーラー 「
ぐっジョブCのサイトにのっている
int型の変数の格納できる数値の範囲 -2147483648から2147483647
の情報をつかって
変数aを媒介するときも
直接printf関数の第2引数に 数値をかきこむ場合も
printf出力表示される数値の最大値は2147483647なのがわかったね。
では
直接 printf関数の第2引数に2147483648を数値入力したとき
どのような コンパイル結果が得られるかためしちゃおっかな~
なにか 面白データがえられるかもしれないぞっと!!\(^o^)/」
(👆それちょうど、いま、ついさっき just やったばかりですよ・・・ solarplexussより)
銀行業務を完全に忘れかかるソーラーさんでした。
ぐっジョブC
「おおぉぉぉ~~ソーラー\(^^)/ その意気だ~~。」
ぐっジョブCも何しているのか忘れかかっています。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます