我要改造
unsigned char x = 0xEC
中的 int y = -20
unsigned char x = 0xF0
int y = -16
如果我这样投(假设x = 0xF0
)
int y = (int)x
我获得的x = 240
是0xF0
的正确十进制表示。哪里错了?我怎样才能得到负数?
答案 0 :(得分:2)
首先将unsigned char
转换为已签名的char
,然后转到int
将为您提供所需的结果:
unsigned char x = 0xEC;
char x1 = (char)x;
int x2 = x1;
正如CRD指出的那样,C规范留下了char
可以是有符号或无符号的事实,因此这里最安全的解决方案是明确的。
signed char x1 = (signed char)x;