【发布时间】:2014-12-14 07:20:19
【问题描述】:
为什么下面的代码编译不出来
int n = 5;
char c = n;
但以下确实编译
char c = 5;
我不是在这两种情况下都给 char 分配了一个整数值吗?
【问题讨论】:
-
但这行得通,
char c = (char) 5;请注意,int 的范围远大于 char,因此不能保证将 int 分配给 char 是合法的。 -
哦,有道理。所以只能归结为 char- 和 int 范围之间的差异?
-
我的猜测是 char 是 16 位,但 int 是 32 位。因此,当将 5 分配给 char 时,它适合 16 位,所以它很酷,但 int 显然太大了。参考docs.oracle.com/javase/tutorial/java/nutsandbolts/…
-
Integer.MAX_VALUE 为 7fffffff,而 char 最高可达 '\uFFFF'
-
@Victor2748 你提到的问题不同。他指的是别的东西。