很明显, char应该是一个字节。但问题是:
1.程序是一个MFC应用,UNICODE和_UNICODE宏被打开。
2. char ch = 0xFFFFFFD5;显示 ch 的hex值是 0xFFFFFFD5 而不是 0xD5 。 但是如果 ch=0x87654321 , 结果正常:0x21 。 其它类型 BYTE DWORD TCHAR WCHAR 则一切正常。 难道是MFC的BUG 或是别的原因????

解决方案 »

  1.   

    0xFFFFFFD5是它的地址吧而不是值,0x21是ch的值不是地址
      

  2.   

    其他类型都是unsigned,char是signed。
    ch=0x21,是个正数;ch=0xD5,是个负数。
    如果你是用printf之类的函数把它当成整数打出来的时候会扩展成负数,就出现你看到的一堆FF
      

  3.   

    就你标题的问题,char只有1个字节。
      

  4.   

    不会的,char不管是否定义UNICODE,就是一个字节。VC再弱智也不会有这么低级的BUG。问题是你怎么来查看的。
      

  5.   

    sizeof(char)
    你修改为 unsigned char 就知道了
    char 的数据范围 -128 —— 127
    这里的数据0xD5已经认为是负数了 前面的都是符号扩展 这是为了调试环境方便,但并不占用实际内存不信 把 ch=0x87654321 修改为 ch=0x876543D5 试试看
      

  6.   

    结贴,眼见不一定为实。以前没有注意函数在显示char会加扩展。 多谢了!!