【问题标题】:warning: multi-character character constant [-Wmultichar]| [duplicate]警告:多字符字符常量 [-Wmultichar]| [复制]
【发布时间】:2014-09-28 15:44:53
【问题描述】:
/* Beginning 2.0 */
#include<stdio.h>
main()
{
    printf(" %d signifies the %c of %f",9,'rise',17.0);
    return 0;
}

大家好

当我编译它时,编译器给出以下警告:

warning: multi-character character constant [-Wmultichar]|

并且输出只打印e 而不是rise

C语言中不允许有多个字符吗?

如何打印整个单词 (rise)?

请帮帮我。

【问题讨论】:

  • 切线:说int main(),而不是main(),后者已经过时,被认为是草率。

标签: c char


【解决方案1】:

试试:printf(" %d signifies the %s of %f",9,"rise",17.0);

C 区分字符(一个字符)和字符字符串(可以包含任意数量的字符)。您使用单引号 ('') 表示字符文字,但使用双引号表示字符 string 文字。

同样,您指定%c 来转换单个字符,但指定%s 来转换字符串。

【讨论】:

    【解决方案2】:

    使用%s"" 作为字符串:

    printf(" %d signifies the %s of %f",9,"rise",17.0);
                              ^^          ^    ^
    

    对于'rise',这是有效的ISO 9899:1999 C。它在 gcc 下编译时没有警告,-Wall“multi-character character constant” 警告,-pedantic

    根据标准(§6.4.4.4.10),

    • The value of an integer character constant containing more than one character (e.g., 'ab'), [...] is implementation-defined.

    【讨论】:

      猜你喜欢
      • 2014-07-01
      • 2015-09-12
      • 2017-05-21
      • 2022-11-19
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多