今回のC言語講座は構造体メンバのメモリ格納状態についてです。これを知っておくと省メモリに繋がりますー
C言語035 構造体のメモリ状態 - プログラミング指南 - Code Knowledge https://codeknowledge.livedoor.blog/archives/25177129.html
いつも、大体「うぐげげげげ、辛たん」となりがちだけど、今回のこれは、なんというか、「うひゃはーーっっ」と盛り上がったことです。
で、今回の話を読んで、初めてchar型のなんたるかを把握した(・・・と思う)。
そういうことだったのかーーーっっと。
char型=文字、となんとなく思っていたけれど、全然そうじゃなかったorz。
char型1個で1バイト文字1個のデータが入れられる・・・というだけで、別に数値でもいいのだ。。。ただし、char箱のサイズは、1バイトで、char箱に入っているビットの箱は、8つしかない。よって、10進法換算で、0~255(unsigned charの場合)までの数値しか扱えない。
printfで表示させる時、
%c指定→char箱の中の値を文字コードと解釈して、該当する文字を表示せよ
%d指定→char箱の中身の数値を表示せよ
・・・ってことなのだな、と。%d指定するとASCIIコードの方が表示される・・・と思っていたけど、そうじゃない。
'a'を指定すると、char箱に97がセットされる(2進数だが)。コンピュータ的には、こやつは97だ。でも、%cで表示せよ、とした場合には、表示する時に文字コード参照して97に該当する文字「a」が表示される。
QT: https://mstdn.jp/@NAITOTokihiro/111196286469920045 [参照]
@UkkariTako はい、その通りです。char 完全理解状態だと言っても良いと思います!
ありがとうございます。先生の講座のお陰で、ついに理解に到達しました。
何が、というのでもないけれど、ずっともやもや、もやもや、「見えそうで見えない」感がしていたのですが、その霧が晴れました。
C言語の「型」が、つねにどこかふわふわと宙に浮いたようになっていたのですが、型の中にあるバイトやビットの箱が見えたことで、なんとか「手元に引き寄せ」られるようになった気がします。いじくり回せるところまでは、まだ行きませんが。
本当にありがとうございます。面白いですねえ!!!
ちなみに、今までのC言語講座で、この話がなかったわけではなく・・・
はなから「文字=char型」という思い込みが邪魔をして、私がきちんと話を理解できていなかっただけなのです・・・orz。
ずっともやもやしていたのが、やっとすっきりした。
だから、別にchar型使って数値扱ってもいいんだ(使える数値範囲狭いけど)。
どうせ数値だから(どうせって言うなー)