簡體   English   中英

在C中轉換為unsigned char

[英]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, & ,它在每個操作數的位中給出10

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM