在C中将非现有ASCII字符转换为int

时间:2016-11-18 10:18:39

标签: c type-conversion

int i = 65537;
char c = (char) i;
printf("%d", c);

我从那里得到“1”,我想知道为什么

2 个答案:

答案 0 :(得分:0)

i定义为int(32位),二进制值为65537 = 10000000000000001c = (char) i时,值被截断,因为c是8位 c将是c = 00000001所以c = 1

答案 1 :(得分:-1)

大多数int有32位,而char只有8位。如果将int转换为char,则会丢弃剩余的24位。结果未定义。