为什么不编译以下代码
int n = 5;
char c = n;
Run Code Online (Sandbox Code Playgroud)
但以下编译
char c = 5;
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我不只是为char分配一个整数值吗?
他的问题是为什么他的代码不能编译,而不是如何做他正在尝试做的事情.
行的原因
char c = n
不编译,是因为char(-2 ^ 15到2 ^ 15 - 1)的范围远小于int(-2 ^ 31到2 ^ 31 - 1)的范围.编译器看到你正在尝试将一个int分配给一个char,并阻止你,因为它意识到了这一点.