<分区>
我有一个简单的程序。
#include <stdio.h>
#include <string.h
int main(int argc, char *argv[])
{
for (int i = 0; i < strlen(argv[1]); ++i)
printf("%x ", argv[1][i]);
printf("\n");
}
我运行它就像
$ ./program 111
31 31 31
但是当我运行它时
$ ./program ●●●
ffffffe2 ffffff97 ffffff8f ffffffe2 ffffff97 ffffff8f ffffffe2 ffffff97 ffffff8f
这里每个●
应该被编码为3个字节(UTF-8):e2
97
8f
, 但看起来它是由 3 个 unsigned
编码的。
如果 sizeof(char)
始终为 1 个字节,我不明白 ffffff
从何而来。