为什么以下代码没有编译
int n = 5;
char c = n;
但以下编译
char c = 5;
Aren我只是在两种情况下都给char赋一个整数值?
答案 0 :(得分:10)
char
可以在没有演员的情况下分配给int
,因为这是一个扩大的转换。要反过来说,int
到char
需要投射,因为它是一个缩小的转化。
答案 1 :(得分:5)
他的问题是为什么他的代码不能编译,而不是如何做他正在尝试做的事情。
行
的原因 char c = n
不编译,是因为char(-2 ^ 15到2 ^ 15 - 1)的范围远小于int(-2 ^ 31到2 ^ 31 - 1)的范围。编译器看到你正在尝试将一个int分配给一个char,并阻止你,因为它实现了这一点。