C从int转换为char

use*_*232 2 c

我有一个简单的代码

char t =(char)(3000);

那么t的值是-72.十六进制值3000是0xBB8.我不明白为什么t的值是-72.

谢谢你的回答.


关于Mac,我不知道.所以我的结果是-72.据我所知,MAC正在使用Big Endian,它会影响结果吗?我没有任何MAC计算机进行测试,所以我想知道MAC人员.

Art*_*ius 12

十六进制值3000是0xBB8.

因此char的十六进制值(顺便说一下,似乎在编译器上签名)是0xB8.

如果它是无符号的,则0xB8将为184.但是由于它已经签名,其实际值减少了256,即-72.

如果你想知道为什么会这样,请阅读两个补码表示法.