鉴于此C
指令:
int c = 'é';
在运行时,执行此指令后,如果我查看c
的值,则当我期待0xffffffe9
时,十六进制值为0x000000e9
...
你能解释一下为什么它会像这样,以及我应该怎样做才能得到预期的结果?
请注意,如果我改为使用此说明:
int c = 0xE9;
我将0x000000e9
作为c的值。
感谢您帮助我。
答案 0 :(得分:0)
char
已在您的平台上签名。 127以上的非ASCII字符常量实际上是负int
值。尝试将非ASCII字符常量转换为(unsigned char)
,或者如果使用gcc
或clang
,请添加-funsigned-char
作为命令行选项。
在源文件中使用非ASCII字符会导致出现问题。根据文本编辑器使用的编码和编译器的期望,您最终可能会遇到比您在此处遇到的更令人惊讶的行为。
最好完全避免它们...... Tant pis。