我想打印单词“?esnek”的单个字节,期望打印 7 个字节,因为“?” 以 2 个字节编码,但它会在终端中打印垃圾字符,例如问号。如果我打印出整数值,我会得到这个序列。
-60 -115 101 115 110 101 107
Run Code Online (Sandbox Code Playgroud)
为什么前两个数字是负数?这是我用来尝试的代码。
char *utfstring = "?esnek";
for(size_t i = 0; i < strlen(utfstring); i++) {
printf("%c ", utfstring[i]);
}
for(size_t i = 0; i < strlen(utfstring); i++) {
printf("%d ", utfstring[i]);
}
Run Code Online (Sandbox Code Playgroud)
我预计前两个值是 c4 8d 因为?根据https://www.utf8-chartable.de/unicode-utf8-table.pl?start=256&unicodeinhtml=dec 进行编码