今回のC言語講座は構造体メンバのメモリ格納状態についてです。これを知っておくと省メモリに繋がりますー
C言語035 構造体のメモリ状態 - プログラミング指南 - Code Knowledge codeknowledge.livedoor.blog/ar

フォロー

いつも、大体「うぐげげげげ、辛たん」となりがちだけど、今回のこれは、なんというか、「うひゃはーーっっ」と盛り上がったことです。

で、今回の話を読んで、初めて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」が表示される。 :tiken:
QT: mstdn.jp/@NAITOTokihiro/111196
[参照]

内藤 時浩  
今回のC言語講座は構造体メンバのメモリ格納状態についてです。これを知っておくと省メモリに繋がりますー C言語035 構造体のメモリ状態 - プログラミング指南 - Code Knowledge https://codeknowledge.livedoor.blog/archives/25177...

ちなみに、今までのC言語講座で、この話がなかったわけではなく・・・

はなから「文字=char型」という思い込みが邪魔をして、私がきちんと話を理解できていなかっただけなのです・・・orz。

ずっともやもやしていたのが、やっとすっきりした。

だから、別にchar型使って数値扱ってもいいんだ(使える数値範囲狭いけど)。

どうせ数値だから(どうせって言うなー)

はい、その通りです。char 完全理解状態だと言っても良いと思います!

@NAITOTokihiro

ありがとうございます。先生の講座のお陰で、ついに理解に到達しました。

何が、というのでもないけれど、ずっともやもや、もやもや、「見えそうで見えない」感がしていたのですが、その霧が晴れました。

C言語の「型」が、つねにどこかふわふわと宙に浮いたようになっていたのですが、型の中にあるバイトやビットの箱が見えたことで、なんとか「手元に引き寄せ」られるようになった気がします。いじくり回せるところまでは、まだ行きませんが。

本当にありがとうございます。面白いですねえ!!!

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。