1

私は奇妙な問題に直面していて、私のmac osx lionで作業しています(xcode4 / clangの下で、gcc4.2で再現可能ですが)。

unsignedchar変数に127を超える値を割り当てることはできないようです。だから、私が割り当てるとき

v = (unsigned char) 156;

または、単に

std::cout << (unsigned char) 231 << std::endl;

私のプログラムは出力を生成しません。

このコードを実行すると

std::cout << "Unsigned chars range up to " << UCHAR_MAX << std::endl;

次の出力が得られます。

符号なし文字の範囲は最大255です

ただし、このようなものを実行すると、プログラムは毎回異なる任意の値(c = 114、c = 252など)までの出力を生成します。for(unsigned char c = 0; c <CHAR_MAX; c ++)std :: cout << "c =" << 2 * c << std :: endl;

CHAR_MAXをUCHAR_MAXに変更すると、プログラムは再び出力なしで終了します:(

前もって感謝します

4

3 に答える 3

2

cout数値を文字セットの文字に変換しています(まあ、それは... 何も表示されない場合、文字セットの有効な文字ではありません。技術的には、これを決定しているのは端末です)。

代わりにキャストしunsigned intます。

追加する編集: ildjarnは、あなたの質問に対する彼のコメントで非常に有効な点を指摘しています。これをデバッガで実行すると、実際に期待どおりの値であることがわかります。

于 2012-02-14T19:52:00.817 に答える