我在编写一个试图打印 UTF-8 字符的组成字节值的程序时遇到了这个问题。
这是我为测试各种~0
操作而编写的程序:
#include <stdio.h>
int main()
{
printf("%x\n", (char)~0); // ffffffff
printf("%x\n", (unsigned char)~0); // ff
printf("%d\n", sizeof(char) == sizeof(unsigned char)); // 1
printf("%d\n", sizeof(char) == sizeof(unsigned int)); // 0
printf("%d\n", (char)~0 == (unsigned int)~0); // 1
}
我很难理解为什么char
会在产生int
-sized 值时unsigned char
产生char
-sized 值。