char abc =0x81;
printf("abc d=%d\n",abc);
printf("abc c=%c\n",abc);abc             d=-127
abc             c=?
在内存当中显示
81 CC CC CC C0为什么abc!=129
?????

解决方案 »

  1.   

    用BYTE,char的范围是-128~127
    BYTE的范围才是0~255
      

  2.   

    比如这样
    int abc = 0x81
    这样在内存当中也是形成
    81 CC CC CC 这两者在内存当中都一样,
    为什么打印
    printf("abc d=%d\n",abc);
    结果却不一样
      

  3.   

    char ch = 0x81;
    printf("ch d=%d\n",ch);
    printf("ch c=%c\n",ch); int a = 0x81;
    printf("a d=%d\n",a);
    printf("a c=%c\n",a);
    在内存当中是这样显示的0012FF78  81 00 00 00 81 CC CC CC打印结果是ch              d=-127
    ch              c=?
    a               d=129
    a               c=?
      

  4.   

    内存是以补码形式存放的,要结合数据类型(signed 或 unsigned)才有确切的值
      

  5.   

    用unsigned char:
    unsigned char abc =0x81;
    printf("abc d=%d\n",abc);
    printf("abc c=%c\n",abc);
      

  6.   

    内存是以补码形式存放的,要结合数据类型(signed 或 unsigned)才有确切的是否可以认为操作系统知道每块内存是否signed或者unsigned