【发布时间】:2019-09-16 17:13:04
【问题描述】:
我有简单的程序。
#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)编码:e2978f,但看起来它是用3 个unsigned 编码的。
如果sizeof(char) 总是1 字节,我不明白ffffff 来自哪里。
【问题讨论】: