int main() {
int a = 100000;
char b;
b = a;
}
我认为这段代码不能编译,但确实如此。有人能给我一个关于c如何处理隐式类型转换的可靠解释吗?
答案 0 :(得分:-1)
C不是类型安全的。它严重依赖于用户,因此假设他知道自己在做什么。
此分配是依赖于实现的ìnt
,并将最低有效字节分配给char
变量。
假设主机架构int
的大小为32位,默认为ìnt
signed
,那么ìnt
可以存储的范围是
[ - 1 *(2 ^(32 - 1)-1),2 ^(32 - 1)] = [-2147483647,2147483648]
将其与unsigned char
可以存储的范围进行比较(取决于主机架构,但char
通常为8位长):
[0,255]
您可以将char
视为限制在该范围内的整数。它可能会让人感到困惑,因为它通常用于存储字符。