[英]Casting to unsigned char in C
我面臨以下問題:當嘗試強制轉換為unsigned char時,我得到了意外的值。 我正在使用的代碼:
unsigned char MyVal1 = ((0xF1E3 && 0xff00) >> 8);
unsigned char MyVal2 = (unsigned char)((0xF1E3 && 0xff00) >> 8);
unsigned char MyVal3 = (unsigned char)((0xF1E3 && 0xff));
我將所有三個變量存儲在一個數組中。
我得到的輸出(查看數組中的值;數組是unsigned char數組):
0x00
0x00
0x01
雖然我在期待:
0xF1
0xF1
0xE3
有人可以幫我解決我做錯了什么嗎?
運算符&&
和&
在整數上的工作方式不同。 您的操作數被第一轉換為bool(零/非零),然后and
編在一起。
&&
是布爾和運算符; 如果兩個操作數都為非零,則給出1
,否則為0
。 你想要bitwise和operator, &
,它在每個操作數的位中給出1
或0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.