int i = 65537;
char c = (char) i;
printf("%d", c);
我从那里得到“1”,我想知道为什么
答案 0 :(得分:0)
i
定义为int
(32位),二进制值为65537 = 10000000000000001
当c = (char)
i时,值被截断,因为c是8位
c将是c = 00000001
所以c = 1
答案 1 :(得分:-1)
大多数int有32位,而char只有8位。如果将int转换为char,则会丢弃剩余的24位。结果未定义。