char ch = -1; printf( "%2x %2x ",ch, (unsigned char)ch);
ffffffff ff
引用第4楼jon986cn于2007-11-09 12:38发表的 :对的,第二个就是先做了无符号扩展,因为它必须转换成无符号数
引用第6楼jon986cn于2007-11-09 13:37发表的 :怎么“是”无符号数啊。它(ch)本来就被你定义是个有符号数,然后通过(unsigned char)强制转换为无符号数。这个时候ch已经溢出了(因为unsigned char的范围是0~255,而ch是-1),所以它被转换成无符号数-1+256=255=0xff
引用第10楼jon986cn于2007-11-09 13:45发表的 :不知道LZ说的“通过不同的方式访问有不同的意义”是什么意思??
引用第11楼jon986cn于2007-11-09 13:47发表的 :而且在你的例子中,内存里面放的当然是0xff,因为本来就是CPU完成转换后放入内存的