- ベストアンサー
char型と言うものがまだ理解出来ません。
まだC++を初めて間もないものですが、char型が今一理解出来ずに困っております。何方か詳しく教えて下さい。 たとえば、 unsigned char c[3] = {'A', 'B', 'C'}; unsigned char chr; chr = c[1]; とした時に、chrは204 'フ'と言うような答えとなってしまいます。素人目から見ると65 'A' と言うような答えしか予想がつきません。とにかくどういうものなのかがよく理解出来ず、参考書をみても0~255(符号無,英数字1文字),-128~127(符号有,英数字1文字)と書いてり、どのような使い方をするのかの詳細がなく困っております。詳しくご説明頂ける方よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>chrは204 'フ'と言うような答えとなってしまいます。 OSは? コンパイラは? 確認の方法は? ちなみにMicrosoftのコンパイラは、デバッグモードでコンパイルすると確保されたばかりのメモリを240(半角のフ)で初期化します。 なので、tamajunさんの確認方法に誤りがあるのでしょう。 >素人目から見ると65 'A' と言うような答えしか予想がつきません。 これは違いますね。Cの添え字は0からです。なので、66'B'になるはずです。
その他の回答 (3)
- pon_kotu
- ベストアンサー率21% (8/38)
#include <stdio.h> int main(){ unsigned char uc[3] = {'A','B','C'}; char c[3] = {'A','B','C'}; printf ("uc[0]: char %c int %d, c[0]:char %c int %d\n", uc[0], uc[0], c[0], c[0]); printf ("uc[1]: char %c int %d, c[1]:char %c int %d\n", uc[0], uc[0], c[0], c[0]); return 0; } なかんじなものを実行してみてください 配列は、0がスタートなんで あなたがかかれたものを実行して %c でprintfすれば Bが表示されると思います。(%dは符号付十進数表示) もし、printfのときに%sとしているようでしたら、それは文字列に対するもので、文字列はchar配列(配列じゃなくてもいいんだけど)の最後に\0という文字が入っていないとうまく出力されません。str に対して %sはつかえないということです。(変な文字が移る可能性大です) ということで、がんばってください
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
204にはならないと思います。 'B',66だと思うのですが、 どのように確認されて、204 'フ'になったのですか?
- phoenix343
- ベストアンサー率15% (296/1946)
・・・ unsigned char c[3] = {'A', 'B', 'C'}; unsigned char chr; chr = c[1]; printf("%c\n", chr); とやると、結果は B となるけど?
お礼
ご回答ありがとうございます。ご指摘の通り記入ミスで、添え字が0の時でした。OSはWin2k pro,VC++,ブレークポイント設定にてchr = c[0]; の上で止めて結果を見ております。なるほど私の確認方法に誤りがあったのですね、すいませんでした。