当你从int转换为char时,你正在减少从4到1使用的字节数。它如何选择要使用哪个字节来制作char?
是否需要最重要的字节?
或者它最不重要?
或者我应该知道某种规则吗?
答案 0 :(得分:5)
C在执行缩小转换时将采用最低有效字节,因此如果您具有整数值0xCAFEBABE并将其转换为char,则将获得值0xBE。
当然,没有实际保证int
是四个字节或char
是一个,但我很确定截断的逻辑总是相同的,只会丢弃不适合char
的高阶位。
答案 1 :(得分:2)
如果char
已签名,则它是实现定义的,除非原始值已经适合char
的值范围。如果不适合,实现完全可以自由地产生无意义(或引发信号)。如果char
是无符号的(标准允许),那么该值将以模1<<CHAR_BIT
(通常为256)减少。