我在编写一个程序试图打印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
大小的值,而unsigned char
产生char
大小的值.