C的隐式类型转换

时间:2017-11-02 20:23:28

标签: c types

int main() {
    int a = 100000;
    char b;
    b = a;
}

我认为这段代码不能编译,但确实如此。有人能给我一个关于c如何处理隐式类型转换的可靠解释吗?

1 个答案:

答案 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视为限制在该范围内的整数。它可能会让人感到困惑,因为它通常用于存储字符。