#include "stdio.h"int main(){ char a,b; a=124; b=a+a; printf("%x\n",a); printf("%x\n",a+a); printf("%x\n",b); return 0;}
引用第3楼liusum于2007-11-10 00:01发表的 :char 只能表示-128 ~ 127 转 16位时 正数高位用0补 负用1补a= 0111 1100a+a = 1111 1000 = 248 = 0000 0000 1111 1000=f8b=a + a = 1111 1000 = (-8)10b= 1111 1111 1111 1000 = fff8 .......
引用第4楼zhd32于2007-11-10 08:39发表的 :是带符号数用1补,无符号数用0补哈
引用第7楼k哥于2007-11-11 12:56发表的 :还有个问题:char类型是占一个字节,为什么用了%X后显示2个字节呢?
引用第8楼zhoubaozhou于2007-11-11 13:41发表的 :是不是printf 的 %x 将后面的作了扩展,扩展成一个字的
引用第9楼zhd32于2007-11-11 14:19发表的 :是传参的时候做了字长扩展的。。因为 printf 函数不知道第二个及其以后参数的类型和长度
引用第11楼k哥于2007-11-13 13:53发表的 :那为什么a+a的时候扩展是用0,而b扩展是用1呢