因此,我有一个要分配的char c
的'å'
变量。如果我尝试c = 'å'
,则会在终端上显示警告:warning: multi-character character constant [-Wmultichar]
'æ'
,'ø'
或'å'
分配给char c
? 最佳答案
这表明您的文本编辑器使用了一个以上的字节来将字符存储在源代码文件中,这可能是因为它以UTF-8编码将其保存为Unicode字符。由于char
只能容纳一个字节,因此编译器告诉您此赋值不会达到预期的效果,因为您正试图将多字节文字存储到只能容纳一个字节的变量中。
这取决于多个因素。 char
可以存储0到255.1的值,ASCII中仅定义0到127;仅在其他一些代码页(例如,ISO-8859-1)中定义了128到255。为了将这些字符之一存储在char
中,您必须执行以下操作:
-finput-charset=...
。)如果这三个中的任何一个都不匹配,那么您可能会看到编译器警告或垃圾输出,字符应该在该位置。
您可以通过使用宽字符(
wchar_t
)来解决大多数这些问题,这些字符通常足够存储任何Unicode代码点。您仍然必须确保文本编辑器和编译器在源代码中的字符编码方面达成一致,除非您使用\uNNNN
Unicode转义序列,该序列可以仅使用C来表示C源代码中的任何Unicode代码点。 ASCII兼容字符(这意味着不必告知编译器源代码所在的代码页)。1或-128至127; C标准未指定
char
的默认符号,但是由于我们在谈论字符,因此我将假定0到255是预期范围。关于c - 在C中分配字符 'æ', 'ø'或 'å',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25851888/