• 締切済み

coutにchar型の変数を使ったら表示が編です

c1=100; c2=254; printf("c1=%d c2=%d\n",c1,c2); //うまくいく cout << "c1=" << c1 << "c2=" << c2 << "\n"; //変 cout << "c1=" << (int)c1 << "c2=" << (int)c2 << "\n"; //うまくいく なぜうまくいかないのでしょうか? また解決策はありますか? char型で数字を表示したいのですが

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

一応補足しておくと... char型が符号付きか符号無しかは処理系に依存します。 また、char型の表現範囲も処理系に依存します。 254がchar型に格納できないのは、char型が8ビットかつ符号付きの場合に限られます。 話をややこしくしたくなければ、必ず環境を書くべし。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

C++でcoutにストリームで出力する限りは、char型は1文字の文字が入っているものとして処理されます。 数値として表示したい場合は、(int)などでcastするが必要がありますのでこれが正しいです。 あと、ただchar型だと254はマイナスの数値として処理されますので注意してください。254を入れたかったらunsigned charを使います。 char a; //値の範囲-128~127 unsigned char b;//値の範囲0~255

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

char型で表示するには文字列じゃないと char c1[] = "100"; cout << "c1=" << c1;

  • akiyousan
  • ベストアンサー率29% (13/44)
回答No.1

//変 の行も他の2行と同じ表示にしたいという事でしょうか? c1=100 c2=254 と、それぞれ数値が設定されています。 文字で'1' '0' '0' ('2' '5' '4')が入っているわけではありません。 //変 の行では、c1、c2を文字として表示しようとしています。 なので、100, 254をそれぞれ文字で表したものを表示しているはずです。 数字と数値の違いというのを勉強されると良いと思います。 不親切な回答ですみません。

関連するQ&A