因此,我有一个要分配的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中,您必须执行以下操作:

  • 配置您的文本编辑器以使用代码页进行保存,该代码页的每个字符使用一个字节,并且包含要存储的字符。
  • 配置您的编译器以使用此代码页读取源文件。 (例如,使用gcc时,它将为-finput-charset=...。)
  • 如果程序将这些字符输出到(标准输出或文件!),则无论读取输出内容如何,​​都还必须告知该代码页,以便其知道如何处理128到255范围内的字节。

  • 如果这三个中的任何一个都不匹配,那么您可能会看到编译器警告或垃圾输出,字符应该在该位置。

    您可以通过使用宽字符(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/

    10-14 10:39
    查看更多