繁体   English   中英

将尖锐字符分配给C int变量

[英]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)或者如果您使用gccclang ,请添加-funsigned-char作为命令行选项。

在源文件中使用非ASCII字符会引起问题。 根据您的文本编辑器使用的编码以及编译器的期望,最终您可能会得到比您在这里所经历的还要令人惊讶的行为。

最好完全避免它们... Tant pis。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM