很明显, char应该是一个字节。但问题是:
1.程序是一个MFC应用,UNICODE和_UNICODE宏被打开。
2. char ch = 0xFFFFFFD5;显示 ch 的hex值是 0xFFFFFFD5 而不是 0xD5 。 但是如果 ch=0x87654321 , 结果正常:0x21 。 其它类型 BYTE DWORD TCHAR WCHAR 则一切正常。 难道是MFC的BUG 或是别的原因????
1.程序是一个MFC应用,UNICODE和_UNICODE宏被打开。
2. char ch = 0xFFFFFFD5;显示 ch 的hex值是 0xFFFFFFD5 而不是 0xD5 。 但是如果 ch=0x87654321 , 结果正常:0x21 。 其它类型 BYTE DWORD TCHAR WCHAR 则一切正常。 难道是MFC的BUG 或是别的原因????
ch=0x21,是个正数;ch=0xD5,是个负数。
如果你是用printf之类的函数把它当成整数打出来的时候会扩展成负数,就出现你看到的一堆FF
你修改为 unsigned char 就知道了
char 的数据范围 -128 —— 127
这里的数据0xD5已经认为是负数了 前面的都是符号扩展 这是为了调试环境方便,但并不占用实际内存不信 把 ch=0x87654321 修改为 ch=0x876543D5 试试看