3

次の問題に直面しています: unsigned char にキャストしようとすると、予期しない値が得られます。私が使用しているコード:

unsigned char MyVal1  = ((0xF1E3 && 0xff00) >> 8);
unsigned char MyVal2 = (unsigned char)((0xF1E3 && 0xff00) >> 8);
unsigned char MyVal3 = (unsigned char)((0xF1E3 && 0xff));

3 つの変数すべてを配列に格納しています。

私が得ている出力(配列の値を見る;配列は符号なしのchar配列です):

0x00 
0x00
0x01

私が期待していた間:

0xF1 
0xF1
0xE3

誰かが私が間違っていることを手伝ってくれますか?

4

2 に答える 2

12

演算子&&&は、整数に対して同じようには機能しません。オペランドは最初に bool (ゼロ/非ゼロ) に変換されてから、and一緒に編集されます。

于 2012-08-03T10:40:53.303 に答える
10

&&ブール値と演算子です。1両方のオペランドが非ゼロかそうでないかを示し0ます。オペランドの各ビットに orを与えるビットごとのand 演算子が必要です。&10

于 2012-08-03T10:41:38.307 に答える