在C语言中对字符进行类型转换时,使用哪些字节来制作字符?

时间:2011-02-05 22:48:52

标签: c char casting

当你从int转换为char时,你正在减少从4到1使用的字节数。它如何选择要使用哪个字节来制作char?

是否需要最重要的字节?

或者它最不重要?

或者我应该知道某种规则吗?

2 个答案:

答案 0 :(得分:5)

C在执行缩小转换时将采用最低有效字节,因此如果您具有整数值0xCAFEBABE并将其转换为char,则将获得值0xBE。

当然,没有实际保证int是四个字节或char是一个,但我很确定截断的逻辑总是相同的,只会丢弃不适合char的高阶位。

答案 1 :(得分:2)

如果char已签名,则它是实现定义的,除非原始值已经适合char的值范围。如果不适合,实现完全可以自由地产生无意义(或引发信号)。如果char是无符号的(标准允许),那么该值将以模1<<CHAR_BIT(通常为256)减少。