ユーザーから渡されたデータがコンピュータのメモリに格納されるということを意識しておけばプログラミング言語に対する理解がより深まることになります💖

☆%cキャラクター出力変換指定子を使って数値(アスキーコード)をprintf出力表示すると代わりに別の数値、記号などをコマンドプロンプト画面に表示できるぞ!

ソーラー 「でもこの %c キャラクター(文字)出力変換指定子


おもしろいのはこれからですよ。


このプログラムをご覧ください


なにか 違いがあるのかわかりますか


#include <stdio.h>


int main(void)


{

printf("%c\n",100 );

return 0;

}


さきのエピソードでは


シングルクォーテーション'  'で囲まれ


文字データとして


コンピュータのメモリに格納された'1'を


コマンドプロンプト画面に表示したいときは


%c出力変換指定子を使いました

   

でしたが


printf関数の第2引数に


上記のプログラムのように


シングルクォーテーション'  'をつかわず 


そのまま直接


数値を代入してみたらどうなるでしょうか?


先のエピソードのプログラム

👇

#include <stdio.h>


int main(void)


{

printf("%c\n",'1' );

return 0;

}


プログラムの実行結果


1


においては


プログラムの実行結果は1でした


printf("%c\n",'1' );

printf("%c\n",100 );


のように記述した場合


コンパイル結果はど~なるのかな?


楽しみだね


どう思う?😊」


マックス 「文字データを%cのある部分に取り込めるのが


%c出力変換指定子だったじゃ~ん


数値データ100は


シングルクォーテーション'  'で取り囲んでないから


文字じゃないよな


じゃあ取り込めないじゃないか


シングルクォーテーション'  'で取り囲んで文字として


コンピュータのメモリに格納しようとしても


 '1' '7'のように


シングルクォーテーションは


1文字しか入力を受けつけないから


printf("%c\n",'100');


としてもコンパイルエラーが出るしな


どうしようもないか・・・


シングルクォーテーションでかこめない


数値データ100をprintf関数の第2引数にすると


コンパイルエラーになるんじゃないか?」


ソーラー 「そうおもうでしょう?😊わたしもそうおもいます。


では 実際にプログラムを実行してみましょう


このプログラムを

👇

#include <stdio.h>


int main(void)


{

printf("%c\n",100 );

return 0;

}


ソーラー 「コンパイルっ(^^)/」



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


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


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


d


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

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



マックス 「あれっ?なぜ・・・


アルファベットのdがでてくる・・・?


まず~~い バグったか・・・


バグバグちゃん



シングルクォーテーション'  'で囲まれてない


数値データ100をダイレクトに


printf関数の第2引数に入力してた


ソースコードがコンパイルされ実行されると


数値データ100が


コンピュータのメモリに格納され


それに%c出力変換指定子が作用して


アルファベットのdがでてくる。


はははっ たのしいなー。


もしや 100のひとつ前の数値データ99なら


%c出力変換指定子をつかってprintf出力表示したら


アルファベットのdの一つ前のcがでてきたりしてな? 


な? ソーラー。」


ソーラー 「そうですね。数値データ99を


%c出力変換指定子をつかってprintf出力表示してみましょう。


#include <stdio.h>


int main(void)


{

printf("%c\n",99 );

return 0;

}


ソーラー 「コンパイルっ(^^)/」



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


c

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




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


c


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

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


マックス 「おおっ cがでてきたC~~~~~」


ソーラー 「そうです。われらがアルファベットcです。」


マックス


「あてずっぽうで数値データ99を


%c出力変換指定子をつかってprintf出力表示したら


cがでてくるんじゃないか


といったがホントにでてくるとは・・・


どうなってるの これ。」


ソーラー「おもしろいですね。とりあえず


いろいろ数値データをかえて代入してみましょう。


では11はどうなる・・・?


#include <stdio.h>


int main(void)


{

printf("%c\n",11 );

return 0;

}


ソーラー 「コンパイルっ」


プログラムの実行結果



ソーラー 「おもしろいマークがでてきました。


これはっ・・・


・?


数値データに対応していろいろな文字や記号がででくるようです。


いったい どれだけの文字や記号がかくれているんだろう?」



コレクション好きのソーラーの血がうずいているようです。



マックス 

「かわいいなー 


隠れ文字キャラ か(´▽`*)」



ソーラー 「マックス どんどん 


いろんな数値データを代入してみましょう。」


マックス 「そうしてみよっか。ははは(^^)」


ソーラー「(^^)よーし では数値データ124を


%c出力変換指定子をつかってprintf出力表示してみましょう。


#include <stdio.h>


int main(void)


{

printf("%c\n",124 );

return 0;

}


ソーラー 「コンパイルっ」


プログラムの実行結果


Visual Studio2018の場合

|

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




Visual Studio2019の場合


|


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

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


ソーラー 「なんかテトリスの縦棒みたいのがでてきた。(´▽`*)」


うきうきするソーラー。


ソーラー 「これで横棒がでてきたら楽しいな。


テトリスパーツが揃っていく。」


マックス 「俺も


🍎数値データをコンピュータのメモリに格納してから🍎


%c出力変換指定子を使ってprintf出力表示させてみるぞっ。


55だっ。GO!GO! ははははは」


#include <stdio.h>


int main(void)


{

printf("%c\n",55);

return 0;

}


マックス 「コンパイルっ!」


プログラムの実行結果


Visual Studio2018の場合


7

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



Visual Studio2019の場合


7


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

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



マックス 「おおっなんと7がでてきた。


数値データ55を入力して7か・・・


これはおもしろいな


%c出力変換指定子をつかって


コンピュータのメモリに格納された数値データ55が


7と


printf出力表示されたか?


(^^)


芸が細かいな・・・


なんか親しみを感じちゃうなあ。だはは。」


ソーラー 「ほんとです。%c出力変換指定子には


ほんと親しみを


感じます。


面白い仕組みですね。


コンピュータが僕らの身近な存在になったみたいだ。」



このように


%c出力変換指定子には


プログラムが実行されると


コンピュータのメモリに格納された


🍓シングルクォーテーションで囲まれた半角英数字を🍓


そのまま


コマンドプロンプト画面に表示する


という機能のほかに



プログラムが実行されると


コンピュータのメモリに格納された🍓数値データ🍓を


別の文字や数字として


コマンドプロンプト画面に表示する


という機能もあります


メモリに格納された数値データを


%cキャラクター変換指定子をつかって


コマンドプロンプト画面にprintf出力表示する際


コンピュータはメモリに格納された数値データを


文字の画像データにつけられた番号と思って(⋈◍>◡<◍)。✧♡いるのです


ですから その番号を参照して


文字の画像データを


例えば今のように


数値データ

100

99

124

に対応する

文字の画像データ

d

c

|

などを


コマンドプロンプト画面に出力表示することができます


数値データ55に対応するのは

文字の画像データ

7


つまり


7という文字の画像データなんです


実にそのとおりで


%cキャラクター変換指定子をつかって


メモリーに格納された数値データを


コマンドプロンプト画面にprintf出力表示する際


コンピュータは数値データに


対応する画像データを


表示します


☆          ☆          ☆



1日がおわり



自分の家に帰りついたソーラー。


テーブルの上のパソコン静かに開く


ソーラー

「さて


お茶を飲みながら🍒 

今日見つけた隠れキャラクター達を鑑賞してみよう。



ふふ~ん ふ~ん♪♪~~~~~♪~~~~~♪~~~


#include <stdio.h>


int main(void)


{

printf("%c",100 );

return 0;

}


プログラムの実行結果


d


これはキャラクター dを呼び出す呪文。


#include <stdio.h>


int main(void)


{

printf("%c\n",38 );

return 0;

}


プログラムの実行結果


&


これは &


安堵~~♪


ららら~~~♪


たのC~な~~~ うれC~~~とな~~~


ららららら~~~♪~~


この %c出力変換指定子をつかって


隠しキャラクターの扉 を ひらいてみよう


そこには きっと あなたの友達が いつも


まっているよ~~~~~~~♪♪♪


。。。。。。。。。。。。。。。。。。。。。。。。


このように


%cキャラクター変換指定子をつかうことによって


コンピュータのメモリに格納された


数値データに対応する


別の文字、記号を


コマンドプロンプト画面に表示することができます


このときの数値


たとえば


文字dに対応している100などをアスキーコードといいます。


文字dには100という番号が付けられている


つまり


文字の画像データdには100という番号がつけられている


のです


アスキーコードは


1から127までの128個


あり


アスキーコード

100

文字dを表示するためにもちいられたように


アスキーコード

21から126は文字の画像データを表示するために


もちいられ


アスキーコード

0から20は

コンピュータ機器の制御や


テキスト(文章)を作製するときに


もちいられます。


たとえば


テキスト(文章)を作製しているとき


アスキーコード10は


テキスト(文章)を改行するときにつかわれます。


アスキーコード127は


テキスト内の文字を1つ削除するときに


つかわれます。




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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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