【发布时间】:2019-02-28 10:55:36
【问题描述】:
Java char 是一种 16 位数据类型,但在对其执行算术运算时是有符号还是无符号?
你可以在算术中将它用作无符号 16 位整数吗?
例如,以下是否正确?
char c1;
char c2;
int i = c1 << 16 | c2;
或者是否需要先从 c2 中去除符号扩展位?
(我确信这个问题的答案在别处,但似乎没有被明显的搜索找到)。
【问题讨论】:
-
字符是无符号的,但在位移之前它们被提升为整数
-
@Michael 我假设促销不涉及扩展最高位(因为没有符号位)。
-
@r3dst0rm 鉴于该问题的第二个答案本质上是错误的(在评论中指出),我认为这个问题需要澄清(因此这个问题)。