【发布时间】:2021-08-17 19:05:20
【问题描述】:
由于 unsigned char 表示 0 - 255,而 'à' 的扩展 ascii 代码是 133,我希望下面的 C 代码打印 133
unsigned char uc;
uc='à';
printf("%hhu \n",uc);
相反,clang 和 gcc 都会产生以下错误
error: character too large for enclosing character literal type
uc='à';
^
出了什么问题?
顺便说一句,我从法语网站复制了 à 并将结果粘贴到赋值语句中。我怀疑我创建 à 的方式可能无效。
【问题讨论】:
-
您的编辑器使用的是 UTF-8 编码,而不是扩展的 ASCII。
-
您的编译器很可能将您的源代码视为 UTF-8 而不是 ASCII。而在 UTF-8 中,字母“à”表示为两个字节序列 0xC3 0xA0,因此不适合
char,无论是有符号还是无符号。 -
字符 à 不能在 C 程序中使用。尝试使用 \x85。
-
@YvesDaoust 你有规范参考的链接吗?
-
没有“扩展 ascii”这样的东西。有些人在一两年前用这个词来表示几个不相容的东西。今天没有理由使用它。
标签: c unsigned-char