【发布时间】:2015-06-16 10:47:21
【问题描述】:
以下是一个简单的陈述
System.out.println((int)(char)(byte)-1);
- 当我运行它时,我得到的输出为
65535。我不知道原因 它。 - 在执行期间(字节)-1 返回-1,因此
(int)(char)(byte)-1等价于(int)(char)-1。当我打印 (char)-1 时,它会在某些系统中打印?仅,但不是在所有系统中。 - 如果我忽略上面提到的第二点并打印 (int)'?'然后它 打印 63
所以我的问题是,如果我一起进行多播,即(int)(char)(byte)-1,那么我得到65535,但如果我逐部分进行投射
- (字节)-1
- (char)-1
- (int)'?'
那我得到63,为什么会这样?
【问题讨论】:
-
65535是 2^16 - 1,因此char可以具有的最大值...我假设char是一个 2 字节的无符号整数类型 -
@Exhauzt 根据stackoverflow.com/a/11689598/2664200 char 的最大值为 65535
-
这是因为 char 的负值。更多信息->stackoverflow.com/questions/15176079/negative-char-value-java
标签: java