型について(double)6 [型について]
今日はdouble型です。
これもfloat型と同様に小数点が代入できる型です。
float型と何が違うのでしょうか?
型:double
変数:a,b,c,d,e,f
出力データ変換形式:%f
小数点以下:20桁
書き方例:printf("a=%.20f\n",a);
でプログラムを組んで確認したいと思います。
実行結果
・小数点以下が12桁となりました。
・左から17桁目の数字は18桁目を四捨五入した数字
となりました。
(正確な数字は16桁までしか表示されませんでした。)
ということでdouble型をまとめると
・小数点以下の桁が代入可能
・正確な表示は16桁までとなる
(float型は7桁までが正確な表示)
これもfloat型と同様に小数点が代入できる型です。
float型と何が違うのでしょうか?
型:double
変数:a,b,c,d,e,f
出力データ変換形式:%f
小数点以下:20桁
書き方例:printf("a=%.20f\n",a);
でプログラムを組んで確認したいと思います。
実行結果
・小数点以下が12桁となりました。
・左から17桁目の数字は18桁目を四捨五入した数字
となりました。
(正確な数字は16桁までしか表示されませんでした。)
ということでdouble型をまとめると
・小数点以下の桁が代入可能
・正確な表示は16桁までとなる
(float型は7桁までが正確な表示)
型について(float)5 [型について]
今日はfloat型です。
小数点が代入できる型です。
型:float
変数:a,b,c,d,e,f
出力データ変換形式:%f
でプログラムを組んで確認したいと思います。
実行結果
・自動的に小数点以下が6桁となりました。
・小数点以下は6桁までしか表示されませんでした。
・左から7桁目の数字は8桁目を四捨五入されました。
(正確な数字は7桁までしか表示されませんでした。)
小数点以下の桁数を増やすには
「.桁数」で小数点以下の桁数を指定します。
例:printf("%.20f",a);
プログラムを組んで確認してみます。
実行結果
小数点以下の桁数が7、8、9・・・・12となりましたね。
ところで、桁数を増やしてもやはり7桁までしか
正確な数字が表示されません。
これはどうしてでしょうか?
色々調べましたが難しくてすぐには解りませんでした。
あとでゆっくり調べてみます。
ということでfloat型をまとめると
・小数点以下の桁が代入可能
・正確な表示は7桁までとなる
小数点が代入できる型です。
型:float
変数:a,b,c,d,e,f
出力データ変換形式:%f
でプログラムを組んで確認したいと思います。
実行結果
・自動的に小数点以下が6桁となりました。
・小数点以下は6桁までしか表示されませんでした。
・左から7桁目の数字は8桁目を四捨五入されました。
(正確な数字は7桁までしか表示されませんでした。)
小数点以下の桁数を増やすには
「.桁数」で小数点以下の桁数を指定します。
例:printf("%.20f",a);
プログラムを組んで確認してみます。
実行結果
小数点以下の桁数が7、8、9・・・・12となりましたね。
ところで、桁数を増やしてもやはり7桁までしか
正確な数字が表示されません。
これはどうしてでしょうか?
色々調べましたが難しくてすぐには解りませんでした。
あとでゆっくり調べてみます。
ということでfloat型をまとめると
・小数点以下の桁が代入可能
・正確な表示は7桁までとなる
型について(long)4 [型について]
今回はlong型について確認します。
long型は倍長整数型とも言われるため、
恐らく、int型(整数型)の倍の整数が扱えるのではなかと
思います。
型:long
変数:a,b,c,d,e,f,g,h,i,j
出力データ変換形式:%d
でプログラムを組んで確認したいと思います。
実行結果
・-2147483649 → 2147483647
・2147483648 → -2147483648
となり異常表示となりました。
上記2整数以外は正常表示でした。
つまり、long型は-2147483648~2147483647の
整数が代入可能ということです。
これはint型と同じです。
なぜ、同じ範囲の整数を代入するのにint型とlong型が
あるのか調べてみました。
int型は「short int型」、「int型」、「long int型」があるそうです。
①long int型
-2147483648~2147483647の整数が代入可能
な型とのことです。
②int型
DOS時代はシステムが 16ビットのため、-32768~+32767の
整数しか代入出来なかったそうです。
今はPCの性能が良くなってint型でもlong型と同じ範囲の
整数を代入できるようになったのではないかと思います。
③short int型
-32768~+32767の整数が代入可能な型とのことです。
確認してみましょう。
実行結果
・-32769 → 32767
・32768 → -32768
となり異常表示となりました。
上記2整数以外は正常表示でした。
調べたとおり-32768~32767の整数が代入可能と
いうことです。
なぜ、代入できる整数の範囲が大きかったり、
小さかったりする型が存在するのでしょうか?
これも調べてみると
昔はPCの性能が低かったためint型は代入できる
整数がshort int型と同様に-32768~32767だったそうです。
PCの性能が高くなるとint型の代入できる整数は
long int型と同様に-2147483648~2147483647となった。
とのことです。
ということは、今のほとんどのPCでは使い分ける必要は
なく、int型で用が済んでしまうということですね。
long型は倍長整数型とも言われるため、
恐らく、int型(整数型)の倍の整数が扱えるのではなかと
思います。
型:long
変数:a,b,c,d,e,f,g,h,i,j
出力データ変換形式:%d
でプログラムを組んで確認したいと思います。
実行結果
・-2147483649 → 2147483647
・2147483648 → -2147483648
となり異常表示となりました。
上記2整数以外は正常表示でした。
つまり、long型は-2147483648~2147483647の
整数が代入可能ということです。
これはint型と同じです。
なぜ、同じ範囲の整数を代入するのにint型とlong型が
あるのか調べてみました。
int型は「short int型」、「int型」、「long int型」があるそうです。
①long int型
-2147483648~2147483647の整数が代入可能
な型とのことです。
②int型
DOS時代はシステムが 16ビットのため、-32768~+32767の
整数しか代入出来なかったそうです。
今はPCの性能が良くなってint型でもlong型と同じ範囲の
整数を代入できるようになったのではないかと思います。
③short int型
-32768~+32767の整数が代入可能な型とのことです。
確認してみましょう。
実行結果
・-32769 → 32767
・32768 → -32768
となり異常表示となりました。
上記2整数以外は正常表示でした。
調べたとおり-32768~32767の整数が代入可能と
いうことです。
なぜ、代入できる整数の範囲が大きかったり、
小さかったりする型が存在するのでしょうか?
これも調べてみると
昔はPCの性能が低かったためint型は代入できる
整数がshort int型と同様に-32768~32767だったそうです。
PCの性能が高くなるとint型の代入できる整数は
long int型と同様に-2147483648~2147483647となった。
とのことです。
ということは、今のほとんどのPCでは使い分ける必要は
なく、int型で用が済んでしまうということですね。
型について(int)3 [型について]
昨日、出力データの変換形式のやり方が
わかったので、ちょっとint型に戻って
8進数と16進数を表示できるか確認したいと思います。
型:int
変数:a,b,c,
出力データ変換形式は
・10進数:%d
・8進数:%o
・16進数:%x
でやってみたいと思います。
プログラムを組む前に、
10進数、8進数、16進数、2進数を確認しましょう!
①10進数
これは、いつも私たちが使用している数字ですね。
下位の位が9を超えると上位の位が0から1となり
カウントされていきます。
例えば10進数の「18」は
(10×1)+(1×8)=18となります。
②8進数
これはほとんどの人が聞きなれない言葉だと思います。
理系の人も8進数はほとんど使わないと思います。
これは下位の位が7を超えると上位の位が0から1
となりカウントされていきます。
10進数の「22」を8進数で表すと「26」となります。
8進数の「26」を10進数に変換すると
(8×2)+(1×6)=22となります。
③16進数
これは理系の人であれば勉強したことがあるかと思います。
下位の位が15を超えると上位の位が0から1となり
カウントされていきます。
10進数の「58」を16進数で表すと「3a」となります。
ん?まちがえ?
間違えではありません。
16進数では0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,fが数字なのです。
16進数のa~fは10進数で10~15を表します。
16進数の「3a」を10進数に変換すると
(16×3)+(1×a(10))=58となります。
④2進数
これは、コンピュータを使用する人であれば何となく
聞いたことがあるのではないでしょうか。
コンピュータは「0」と「1」で出来ている!!
そう、「0」と「1」で表すのは2進数です。
10進の「42」を2進数で表すと「101010」となります。
2進数の「101010」を10進数に変換すると
(32×1)+(16×0)+(8×1)+(4×0)+(2×1)+(1×0)=42となります。
2進数は出力データ変換形式はないみたいですが、
コンピュータと関係の強い表し方なので
8、10、16進数の説明と一緒にしました。
ちなみに
秒は60進数となります。
60秒は1分だからです。
分も60進数です。
60分は1時間だからです。
それでは時間は何進数でしょうか?
答えは24進数です。
24時間は1日だからです。
それでは日は何進数?
365進数!
365日は1年だから。
それでは月は何進数?
12進数!
12カ月は1年だから。
年は何進数?
10進数です。
ではプログラムを組んで確認してみましょう。
実行結果
問題なく、10進数、8進数、16進数が表示できました
わかったので、ちょっとint型に戻って
8進数と16進数を表示できるか確認したいと思います。
型:int
変数:a,b,c,
出力データ変換形式は
・10進数:%d
・8進数:%o
・16進数:%x
でやってみたいと思います。
プログラムを組む前に、
10進数、8進数、16進数、2進数を確認しましょう!
①10進数
これは、いつも私たちが使用している数字ですね。
下位の位が9を超えると上位の位が0から1となり
カウントされていきます。
例えば10進数の「18」は
(10×1)+(1×8)=18となります。
②8進数
これはほとんどの人が聞きなれない言葉だと思います。
理系の人も8進数はほとんど使わないと思います。
これは下位の位が7を超えると上位の位が0から1
となりカウントされていきます。
10進数の「22」を8進数で表すと「26」となります。
8進数の「26」を10進数に変換すると
(8×2)+(1×6)=22となります。
③16進数
これは理系の人であれば勉強したことがあるかと思います。
下位の位が15を超えると上位の位が0から1となり
カウントされていきます。
10進数の「58」を16進数で表すと「3a」となります。
ん?まちがえ?
間違えではありません。
16進数では0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,fが数字なのです。
16進数のa~fは10進数で10~15を表します。
16進数の「3a」を10進数に変換すると
(16×3)+(1×a(10))=58となります。
④2進数
これは、コンピュータを使用する人であれば何となく
聞いたことがあるのではないでしょうか。
コンピュータは「0」と「1」で出来ている!!
そう、「0」と「1」で表すのは2進数です。
10進の「42」を2進数で表すと「101010」となります。
2進数の「101010」を10進数に変換すると
(32×1)+(16×0)+(8×1)+(4×0)+(2×1)+(1×0)=42となります。
2進数は出力データ変換形式はないみたいですが、
コンピュータと関係の強い表し方なので
8、10、16進数の説明と一緒にしました。
ちなみに
秒は60進数となります。
60秒は1分だからです。
分も60進数です。
60分は1時間だからです。
それでは時間は何進数でしょうか?
答えは24進数です。
24時間は1日だからです。
それでは日は何進数?
365進数!
365日は1年だから。
それでは月は何進数?
12進数!
12カ月は1年だから。
年は何進数?
10進数です。
ではプログラムを組んで確認してみましょう。
実行結果
問題なく、10進数、8進数、16進数が表示できました
型について(char)2 [型について]
今日はchar型を確認してみます。
char型は文字を扱う場合に使用する型だそうです。
変数は
hiragana
katakana
eigodai
eigosyou
kigou
suuji
とします。
(変数はあらかじめ決まっている小文字英語の並び
(例えば、int等)を使用しなければなんでも
大丈夫のようです。)
書き方は
char hiragana;
char katakana;
char eigodai;
char eigosyou;
char kigou;
char suuji;
また、各変数に何かを代入するために
hiragana=O;
katakana=O;
eigodai=O;
eigosyou=O;
kigou=O;
suuji=O;
※Oには数字や文字や記号が入ります。
を追加します。
さらに、printfは
printf("%c\n",変数)
というふうに書きます。
int型は%dでしたが、char型は%cとなるようです。
この%dとか%cは出力データの変換形式を
指定しているとのことです。
%c:1文字として出力する
%d:10進数で出力する
%x:16進数で出力する
%o:8進数で出力する
%f:小数点を含んで出力する
%e 指数形式で出力する
%s 文字列として出力する 文字列
つまり、1文字だけ出力したければ%cを
複数文字表示させたければ%sを使用すれば
いいということだと思います。
プログラムで確認してみましょう!
①ひらがな、カタカナ、英語、記号、数字の1文字を変数に代入し「%c」にて表示
ビルドでエラーとなりました。
文字の初めと終わりに「'」をつけると
ビルド可能でした。
実行結果
・あ → ■
・ア → A
・G → G
・g → g
・? → ?
・1 → 1
と日本語以外は正常表示されました。
char型の変数は英語(大小文字)、記号、数字しか
代入できないということですね。
②英語、記号、数字の複数文字を変数に代入し「%c」にて表示
実行結果
・GHI → I
・ghi → i
・@#& → &
・123 → 3
となり、複数文字の最後の文字が表示されました。
つまり、変数に複数文字が代入された場合、出力データ
変換形式が%cだと最後の1文字のみ表示されるということ
ですね。
③ひらがな、カタカナ、英語、記号、数字の1文字を変数に代入し「%s」にて表示
実行結果
ビルドは出来ましたがデバッグでエラーとなりました。
やはり日本語が原因と考えられるため日本語を
削除してもう一度確認します。
実行結果
だめです。エラーです
色々調べたら、型と変数と代入する文字の
書き方がこれまでと違うみたいです。
書き方を下記に変更してビルドしてみます。
char hiragana[]="あ";
char katakana[]="ア";
char eigodai[]="G";
char eigosyou[]="g";
char kigou[]="?";
char suuji[]="1";
成功ですね!!
実行結果
成功です!
・あ → あ
・ア → ア
・G → G
・g → g
・? → ?
・1 → 1
ひらがな、カタカナ、英語(大小文字)、
記号、数字全て表示できました。
④ひらがな、カタカナ、英語、記号、数字の複数文字を変数に代入し「%s」にて表示
実行結果
・あいう → あいう
・アイウ → アイウ
・GHI → GHI
・ghi → ghi
・@#& → @#&
・123 → 123
成功です!!
まとめると
・%cで一文字表示させる場合は
代入する文字を「'」にて挟むことで表示される。
ただし、日本語は不可
・%sで複数文字表示させる場合は
変数の最後に「[ ]」を追加し、代入する文字を
「" "」にて挟むことで表示される。
char型は文字を扱う場合に使用する型だそうです。
変数は
hiragana
katakana
eigodai
eigosyou
kigou
suuji
とします。
(変数はあらかじめ決まっている小文字英語の並び
(例えば、int等)を使用しなければなんでも
大丈夫のようです。)
書き方は
char hiragana;
char katakana;
char eigodai;
char eigosyou;
char kigou;
char suuji;
また、各変数に何かを代入するために
hiragana=O;
katakana=O;
eigodai=O;
eigosyou=O;
kigou=O;
suuji=O;
※Oには数字や文字や記号が入ります。
を追加します。
さらに、printfは
printf("%c\n",変数)
というふうに書きます。
int型は%dでしたが、char型は%cとなるようです。
この%dとか%cは出力データの変換形式を
指定しているとのことです。
%c:1文字として出力する
%d:10進数で出力する
%x:16進数で出力する
%o:8進数で出力する
%f:小数点を含んで出力する
%e 指数形式で出力する
%s 文字列として出力する 文字列
つまり、1文字だけ出力したければ%cを
複数文字表示させたければ%sを使用すれば
いいということだと思います。
プログラムで確認してみましょう!
①ひらがな、カタカナ、英語、記号、数字の1文字を変数に代入し「%c」にて表示
ビルドでエラーとなりました。
文字の初めと終わりに「'」をつけると
ビルド可能でした。
実行結果
・あ → ■
・ア → A
・G → G
・g → g
・? → ?
・1 → 1
と日本語以外は正常表示されました。
char型の変数は英語(大小文字)、記号、数字しか
代入できないということですね。
②英語、記号、数字の複数文字を変数に代入し「%c」にて表示
実行結果
・GHI → I
・ghi → i
・@#& → &
・123 → 3
となり、複数文字の最後の文字が表示されました。
つまり、変数に複数文字が代入された場合、出力データ
変換形式が%cだと最後の1文字のみ表示されるということ
ですね。
③ひらがな、カタカナ、英語、記号、数字の1文字を変数に代入し「%s」にて表示
実行結果
ビルドは出来ましたがデバッグでエラーとなりました。
やはり日本語が原因と考えられるため日本語を
削除してもう一度確認します。
実行結果
だめです。エラーです
色々調べたら、型と変数と代入する文字の
書き方がこれまでと違うみたいです。
書き方を下記に変更してビルドしてみます。
char hiragana[]="あ";
char katakana[]="ア";
char eigodai[]="G";
char eigosyou[]="g";
char kigou[]="?";
char suuji[]="1";
成功ですね!!
実行結果
成功です!
・あ → あ
・ア → ア
・G → G
・g → g
・? → ?
・1 → 1
ひらがな、カタカナ、英語(大小文字)、
記号、数字全て表示できました。
④ひらがな、カタカナ、英語、記号、数字の複数文字を変数に代入し「%s」にて表示
実行結果
・あいう → あいう
・アイウ → アイウ
・GHI → GHI
・ghi → ghi
・@#& → @#&
・123 → 123
成功です!!
まとめると
・%cで一文字表示させる場合は
代入する文字を「'」にて挟むことで表示される。
ただし、日本語は不可
・%sで複数文字表示させる場合は
変数の最後に「[ ]」を追加し、代入する文字を
「" "」にて挟むことで表示される。
型について(int)1 [型について]
今回は変数を使用して色々表示させたいと思います。
そのためには今までのプログラムに型と変数を
追加する必要があります。
今回は型と変数を
型 :int
変数:a,b,c,d,e,f
としてプログラムを書きます。
書き方は
int a;
int b;
int c;
int d;
int e;
int f;
又は
int a,b,c,d,e,f;
また、各変数(a~f)に何かを代入するために
a=O;
b=O;
c=O;
d=O;
e=O;
f=O;
※Oには数字や文字や記号が入ります。
を追加します。
さらに、printfは
printf("%d\n",変数)
というふうに変えます。
「%d」は変数に代入された何かを表示するプログラム
「¥n(\n)」は改行のプログラム
「,変数(a~f)」は表示させたい変数を記入します。
~~~~~~~~~~~~~~~~~~~~~~~
int型は整数を扱う場合に使用する型だそうです。
ここで疑問がいくつかあります。
①マイナスの整数はいくつまで表示可能なのか。
②プラスの整数はいくつまで表示可能なのか。
③小数点を含んだ数字を代入した場合どうなるのか。
④文字を代入した場合はどうなるのか。
⑤記号を代入した場合はどうなるのか。
プログラムで確認しましょう!
①マイナス整数を代入
実行結果
・-1 → -1
・-123 → -123
・-123456 → -123456
・-2147483648 → -2147483648
と正常に表示されました。
・-2147483649 → 2147483647、
・-10000000000 → -1410065408
と異常表示されました。
つまり、int型のマイナス側は-2147483648までの
整数しか扱えないということですね。
②プラス整数を代入
実行結果
・1 → 1
・123 → 123
・123456 → 123456
・2147483647 → 2147483647
正常に表示されました。
・2147483648 → -2147483648
・10000000000 → 1410065408
と異常表示されました。
つまり、int型のプラス側は2147483647までの
整数しか扱えないということですね。
③小数点を含んだ数字を代入
実行結果
・-1.0 → -1
・12.3 → 12
・-123.456 → -123
・2147.483647 → 2147
・-21474.83648 → -21474
・10000000.000 → 10000000
と表示されました。
つまり、int型では小数点以下を切り捨てた
整数が表示されるということですね。
④文字を代入
・あ
・1234あ
・-586a
・-y95348778
・heidoshi
・ed54869ty
全てエラーとなりビルドに失敗しました。
文字を1文字にして初めと終わりに「'」をつけると
ビルド可能でした。
しかし、デバッグすると下記エラーウィンドウが
表示されました。
中止をクリックすると実行結果が表示されました。
実行結果
・'あ' → 33440
・'a' → 97
・'A' → 65
・'ア' → 33601
と異常表示されました。
int型では「'」を入れても入れなくても
文字は表示できないということですね。
⑤記号を代入
・/
・---+
・+**
・%[]
・?¥@
・&$#
全てエラーとなりビルドに失敗しました。
初めと終わりに「'」をつけると
ビルド可能でした。
実行結果
・'/' → 47
・'---+' → 757935403
・'+**' → 2828842
・'%[]' → 2448221
・'?¥@' → 16192
・'&$#' → 2499875
と異常表示されました。
int型では「'」を入れても入れなくても
記号は表示できないということですね。
まとめると-2147483648~2147483647の整数が
表示可能でそのほかの文字や記号は表示不可
ということです
そのためには今までのプログラムに型と変数を
追加する必要があります。
今回は型と変数を
型 :int
変数:a,b,c,d,e,f
としてプログラムを書きます。
書き方は
int a;
int b;
int c;
int d;
int e;
int f;
又は
int a,b,c,d,e,f;
また、各変数(a~f)に何かを代入するために
a=O;
b=O;
c=O;
d=O;
e=O;
f=O;
※Oには数字や文字や記号が入ります。
を追加します。
さらに、printfは
printf("%d\n",変数)
というふうに変えます。
「%d」は変数に代入された何かを表示するプログラム
「¥n(\n)」は改行のプログラム
「,変数(a~f)」は表示させたい変数を記入します。
~~~~~~~~~~~~~~~~~~~~~~~
int型は整数を扱う場合に使用する型だそうです。
ここで疑問がいくつかあります。
①マイナスの整数はいくつまで表示可能なのか。
②プラスの整数はいくつまで表示可能なのか。
③小数点を含んだ数字を代入した場合どうなるのか。
④文字を代入した場合はどうなるのか。
⑤記号を代入した場合はどうなるのか。
プログラムで確認しましょう!
①マイナス整数を代入
実行結果
・-1 → -1
・-123 → -123
・-123456 → -123456
・-2147483648 → -2147483648
と正常に表示されました。
・-2147483649 → 2147483647、
・-10000000000 → -1410065408
と異常表示されました。
つまり、int型のマイナス側は-2147483648までの
整数しか扱えないということですね。
②プラス整数を代入
実行結果
・1 → 1
・123 → 123
・123456 → 123456
・2147483647 → 2147483647
正常に表示されました。
・2147483648 → -2147483648
・10000000000 → 1410065408
と異常表示されました。
つまり、int型のプラス側は2147483647までの
整数しか扱えないということですね。
③小数点を含んだ数字を代入
実行結果
・-1.0 → -1
・12.3 → 12
・-123.456 → -123
・2147.483647 → 2147
・-21474.83648 → -21474
・10000000.000 → 10000000
と表示されました。
つまり、int型では小数点以下を切り捨てた
整数が表示されるということですね。
④文字を代入
・あ
・1234あ
・-586a
・-y95348778
・heidoshi
・ed54869ty
全てエラーとなりビルドに失敗しました。
文字を1文字にして初めと終わりに「'」をつけると
ビルド可能でした。
しかし、デバッグすると下記エラーウィンドウが
表示されました。
中止をクリックすると実行結果が表示されました。
実行結果
・'あ' → 33440
・'a' → 97
・'A' → 65
・'ア' → 33601
と異常表示されました。
int型では「'」を入れても入れなくても
文字は表示できないということですね。
⑤記号を代入
・/
・---+
・+**
・%[]
・?¥@
・&$#
全てエラーとなりビルドに失敗しました。
初めと終わりに「'」をつけると
ビルド可能でした。
実行結果
・'/' → 47
・'---+' → 757935403
・'+**' → 2828842
・'%[]' → 2448221
・'?¥@' → 16192
・'&$#' → 2499875
と異常表示されました。
int型では「'」を入れても入れなくても
記号は表示できないということですね。
まとめると-2147483648~2147483647の整数が
表示可能でそのほかの文字や記号は表示不可
ということです