[英]Assigning a character with an acute into a C int variable
鉴于此C
指令:
int c = 'é';
在运行时,执行该指令后,如果我查看c
的值,则当我期望使用0x000000e9
时,十六进制值为0xffffffe9
。
您能否解释一下为什么会这样,以及我应该怎么做才能获得预期的结果?
请注意,如果我改用以下说明:
int c = 0xE9;
我得到0x000000e9
作为c的值。
感谢你们对我的帮助。
char
在您的平台上签名。 大于127的非ASCII字符常量实际上是负int
值。 尝试将非ASCII字符常量转换为(unsigned char)
或者如果您使用gcc
或clang
,请添加-funsigned-char
作为命令行选项。
在源文件中使用非ASCII字符会引起问题。 根据您的文本编辑器使用的编码以及编译器的期望,最终您可能会得到比您在这里所经历的还要令人惊讶的行为。
最好完全避免它们... Tant pis。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.