アプリ版:「スタンプのみでお礼する」機能のリリースについて

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型で数字を表示したいのですが

A 回答 (4件)

一応補足しておくと...



char型が符号付きか符号無しかは処理系に依存します。
また、char型の表現範囲も処理系に依存します。

254がchar型に格納できないのは、char型が8ビットかつ符号付きの場合に限られます。

話をややこしくしたくなければ、必ず環境を書くべし。
    • good
    • 0

C++でcoutにストリームで出力する限りは、char型は1文字の文字が入っているものとして処理されます。


数値として表示したい場合は、(int)などでcastするが必要がありますのでこれが正しいです。

あと、ただchar型だと254はマイナスの数値として処理されますので注意してください。254を入れたかったらunsigned charを使います。
char a; //値の範囲-128~127
unsigned char b;//値の範囲0~255
    • good
    • 0

char型で表示するには文字列じゃないと



char c1[] = "100";
cout << "c1=" << c1;
    • good
    • 1

//変 の行も他の2行と同じ表示にしたいという事でしょうか?



c1=100
c2=254
と、それぞれ数値が設定されています。

文字で'1' '0' '0' ('2' '5' '4')が入っているわけではありません。

//変 の行では、c1、c2を文字として表示しようとしています。
なので、100, 254をそれぞれ文字で表したものを表示しているはずです。

数字と数値の違いというのを勉強されると良いと思います。
不親切な回答ですみません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!