すこしだけ実際にソーラーたちがどのように問題を解いているのか その様子をのぞいてみましょう。 その6


すこしだけ実際にソーラーたちがどのように問題を解いているのか その様子をのぞいてみましょう。 その6



ソーラー 「うふふふふふふふ。


いい値がでましたね。


あなたの預金額はただいま10499.999523円です。


%f出力変換指定子に切り替えたら


なんかうまくいったね。


微妙に


10499.999523と10500.000000


となってないけど


とりあえずは


10500.000000に近い数値が表示されているね・・・


ふふふふふふふふふふふふふふふふ」


ぐっジョブC  「ソーラー なんか楽しそう\(^^)/ 」


ぐっどワークC 「ぼく自身がめっちゃ楽しい\(^^)/ 」


ソーラー「ほんと 参考になるね このサイト


どこにのってたのかな?」


ぐっどワークC 「そりゃ 僕のサイトだよ。」


ソーラー

「ところで みなさんは


ぐっどワークCのサイトに


//

変数の型int, short型の形式でメモリに格納された整数値をprintf出力表示する場合には


%d出力変換指定子をもちいます

//


とかいてあるのもみておられるはず・・・。


えっだれも見てない???


それは・・・


それで斬新なコンセプト・・というか・・


なんというか その・・・。


いつも、このC言語ワールドの


新鮮さに驚かされます。(^^)


//

変数の型int, short型の形式でメモリに格納された整数値をprintf出力表示する場合には


%d出力変換指定子をもちいます

//


それは・・天国のようにあま~い言葉。


ぐっどワークC さ~ん~~」


ぐっどワークC さ~ん 微笑みかけられてますよ~~。


ぐっどワークC


「僕のサイトに何がかいてあるのか全然自信ありません!!」


ソーラー


#include <stdio.h>


int main(void)

{


float a;

a=1.05;


printf("あなたの預金額はただいま%f円です。\n",10000*a);

return 0;

}


プログラムの実行結果(EAZY IDECの場合)


あなたの預金額はただいま10499.999523円です。


プログラムの実行結果(Visual Studioの場合)


あなたの預金額はただいま10500.000000円です。



このプログラムの実行結果をみても


10000*aは実数値とかんがえるのが正しいとわかるね


(このことは


このあとにつづく


キャスト演算子をもちいて


変数に格納されている数値を整数値から実数値、実数値から整数値に変換してみましょう。


からつづくエピソードによって


さらに詳しく理解できるようになっています)


では


今度は


ぐっどワークCサイトに掲載されている


次のプログラム


#include <stdio.h>


int main(void)

{

int a;

a=3;


printf("あなたの預金額はただいま%d円です。\n",1.05*a);

return 0;

}

(実際にはこのプログラムでは%d出力変換指定子ではなく


%f出力変換指定子がもちいられなければいけません)


において


1.05*aは

整数値になるのか

実数値になるのか


をみていきましょう。」


ぐっジョブC  「ソーラー


もう・・・ なんかかっこいい(^^)/ 」


ぐっどワークC 「もう・・・ぼく自分のサイト・・はじめて見たよ。


ソーラー これ解説して。(^^)/ 」


ソーラー 「ぼくも全くの初心者だから・・・


手探りですすんでいくよ。


でも


ぐっジョブCとぐっどワークCがいると


学習が楽しくてしょうがないよ。


どんどん新しい世界がひろがってくる。」



ぐっジョブC  「ほめられちゃった\(^^)/ 」


ぐっどワークC 「ダンス甲子園の解説も・・・・・・」


ソーラー 「ダンスの解説もいいね・・・


おおっと続き、続き


では


再びプログラムをみてみると


#include <stdio.h>


int main(void)

{

int a;

a=3;


printf("あなたの預金額はただいま%d円です。\n",1.05*a);

return 0;

}


このプログラムですね。


//

以下

ぐっどワークCサイトより


変数の型int, short型の形式でメモリに格納された整数値をprintf出力表示する場合には


%d出力変換指定子をもちいます

//


このことから


int a;

a=3;


と☆int型☆の変数aに数値3が格納されているので


%d出力変換指定子をもちいれば


printf("あなたの預金額はただいま%d円です。\n",1.05*a);


の実行結果も正しく出力表示できるはず。


だって


変数の型int, short型の形式でメモリに格納された整数値をprintf出力表示する場合には


%d出力変換指定子をもちいます


とかいてあるからね(*´▽`*)


(みなさん 嘘です 正しくprintf出力表示されません)


僕的には正しくprintf出力できなくてもOK(^^)/


つまり


このプログラムのポイントは


int a;

a=3;


変数の型int(整数のいれもの)の変数aに



a=3;


と変数aには3を代入した。


ここまではいいんだけど、注目はやはり ここ、ここっ

👇

printf("あなたの預金額はただいま%d円です。\n",1.05*a);



ぐっジョブC 「どこ、どこ?」


ソーラー 「ここ、ここっ。


printf("あなたの預金額はただいま%d円です。\n",1.05*a);


のそこっそこっ。」


ぐっどワークC 「どこっどこ?」


ソーラー 「そこっそこ  Oh,


そこっそこ


1.05*a  これです。


予測だと


a=3;ですから1.05*a=3.15になるはず。


今までの経験から3.15ならば%dではうまくprintf出力できないはずです。


たとえ

//

以下

ぐっどワークCサイトより


変数の型int, short型の形式でメモリに格納された整数値をprintf出力表示する場合には


%d出力変換指定子をもちいます

//


と記述されていても


変数の型int(整数のいれもの)の変数aに1.05をかけてしまっているので


1.05*aは実数値になってしまうからね」


ぐっジョブC 「ああっ。


実数値3.15を%d出力変換指定子をもちいてのprintf出力表示


まず無理


そうだ もう晩御飯にしよう。」


ぐっどワークC 「どこっどこ?」


まだどこがポイントなのかみつけられないぐっどワークC。


ぐっどワークCさん


自分のサイトですよ~😊


ソーラー

「ははっ ぐっジョブC ぐっどワークC


1.05*aは

整数値になるのか

実数値になるのか


さあ


プログラムをコンパイルしてたしかめてみましょう。



それではっ、このプログラム


今 厳かに」


嬉しそうなソーラー。


ソーラー

「はりきってぇ~~~。」


#include <stdio.h>


int main(void)

{

int a;

a=3;


printf("あなたの預金額はただいま%d円です。\n",1.05*a);

return 0;

}


ソーラー

「えいっコンパイルっ。」


プログラムの実行結果(EAZY IDECの場合)



あなたの預金額は858993460円です。

続行するには何かキーを押してください・・・_




プログラムの実行結果(Visual Studio2019の場合)


重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態

警告 C6273 整数でない値が _Param_(2) として渡されました。'printf' への呼び出しには整数が必要です。実際の型: 'double': ポインター値を渡す場合は、%p を使用してください。 Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 8

警告 C4477 'printf' : 書式文字列 '%d' には、型 'int' の引数が必要ですが、可変個引数 1 は型 'double' です Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 8



とエディタ画面下部に表示されますが



あなたの預金額はただいま858993460円です。


C:\Users\solar\source\repos\Project2\Debug\Project2.exe (プロセス 2594804) は、コード 0 で終了しました。

このウィンドウを閉じるには、任意のキーを押してください...


と表示されます




ソーラー

「やはり・・・賛嘆たる結果が・・


自分的にはいい答えではありますが。


もう エラー数字を見ると


ああっ 


切なくて 切なくて


今日も身悶えるんです。にゃおん」


うれしそうに恍惚の表情を浮かべるソーラー。


ぐっじょぶC 「待ったあ?


あなた~晩御飯できましたわよ。」


焼いたお魚を配膳しにくる素敵な奥さん ぐっじょぶC。


ソーラー

「どうやらプログラムの実行結果が正しく表示されないところを見ると


1.05*aは実数値になるようだね


そこで

%d出力変換指定子

%f出力変換指定子

にきりかえてっと・・・


かきかきっと・・・


それでは


int a;

a=3;


そのままで%d出力変換指定子を


%f出力変換指定子に切り替えた


👇このプログラムを


#include <stdio.h>


int main(void)

{

int a;

a=3;


printf("あなたの預金額はただいま%f円です。\n",1.05*a);

return 0;

}


コンパイルすると・・・」



プログラムの実行結果(EAZY IDECの場合)


あなたの預金額はただいま3.150000円です。

続行するには何かキーを押してください・・・_



プログラムの実行結果(Visual Studioの場合)


あなたの預金額はただいま3.150000円です。


C:\Users\solar\source\repos\Project2\Debug\Project2.exe (プロセス 2598820) は、コード 0 で終了しました。

このウィンドウを閉じるには、任意のキーを押してください...







ソーラー

「おっ なんか普通な感じの答えがでてきました。」


エラー数字の世界にどはまるソーラーにはなんだか普通の答え


が物足りない感じになってる???


ソーラー

「1.05*aは実数値になるようですね


%f出力変換指定子を用いたことにより


うまく3.15が表示されたわけです


出力変換指定子のつかいわけには


みなさん


注意が必要ですね


(詳しいしくみは


この後に続く


キャスト演算子をもちいて変数に格納されている数値を整数値から実数値、実数値から整数値に変換してみましょう


以降のエピソードをご覧ください


solarplexussより )


まずはひと安心。


それとならんで


カールトンさんをぐっじょぶCとぐっどワークCを用い


どのネタで

翻弄するか?


という問題が


ふつふつと今の僕の中でランク急上昇↑してきている。ふふふ」






                       

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る