【发布时间】:2016-01-06 20:22:59
【问题描述】:
我有一个 unsigned int,它实际上存储了一个有符号的 int,而有符号的 int 范围从 -128 到 127。
我想将此值存储回 unsigned int 以便我可以简单地 应用掩码 0xFF 并获取签名字符。
如何进行转换?
即
unsigned int foo = -100;
foo = (char)foo;
char bar = foo & 0xFF;
assert(bar == -100);
【问题讨论】:
-
我无法理解你的问题。
-
这会给您带来预期的结果还是意想不到的结果?
-
请注意:'char'、'signed char' 和 'unsigned char' 是三种不同的类型,其中 'char' 是否有符号,但不同(使用有符号字符并避免位操作)
-
像
signed char bar = foo;这样的隐式转换会产生相同的结果。 -
“我有一个无符号整数,实际上存储了一个有符号整数”——为什么?为什么不首先将其存储在有符号的 int 中?
标签: c data-conversion