char ch = -1; printf( "%2x %2x ",ch, (unsigned char)ch);
引用第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完成转换后放入内存的
引用第14楼jon986cn于2007-11-09 13:57发表的 :这不叫“通过不同的方式访问有不同的意义”。而是CPU经过处理后返回给你的啊,他都是同一个值。首先我要说明,内存里面永远存放的都是0xff,为什么?因为现代计算机广泛采用补码表示。而计算机根据你的需要返回时,要返回合法的值。
引用第21楼清杯于2007-11-12 13:20发表的 :CU是什么?