C 如何在常量中增加字符数?

C 如何在常量中增加字符数?,c,char,C,Char,下面是一个示例代码: #include <stdio.h> char a; int main(void) { a = 'ayy lmao'; printf("%c", a); getchar(); return 0; } #包括 字符a; 内部主(空) { a=‘ayy lmao’; printf(“%c”,a); getchar(); 返回0; } 当我执行时,会收到一条错误消息,说“常量中的字符太多”。如何修复此问题并允许将尽可能多的字符分配给“a” 在C中,您应该在单引号中

下面是一个示例代码:

#include <stdio.h>
char a;
int main(void)
{
a = 'ayy lmao';
printf("%c", a);
getchar();
return 0;
}
#包括
字符a;
内部主(空)
{
a=‘ayy lmao’;
printf(“%c”,a);
getchar();
返回0;
}

当我执行时,会收到一条错误消息,说“常量中的字符太多”。如何修复此问题并允许将尽可能多的字符分配给“a”

C
中,您应该在单引号中定义一个字符

a = 'w';
中的所有内容都被视为字符数组。
包含字符,后跟终止字符
\0
“w”
是字符数组,它被转换为指向数组第一个元素的指针,作为赋值运算符的操作数

它被分配给
char
,因此在典型环境中它将成为一个无意义的值

试一试

#包括
内部主(空){
INTA;
a=‘w’;
printf(“%c”,a);
返回0;
}

#包括
内部主(空){
char*a;
a=“w”;
printf(“%s”,a);
返回0;
}
注:

  • 您应该使用标准的
    intmain(void)
    而不是
    main()
  • 除非必要,否则不应使用全局变量
  • 字符常量的类型为C中的
    int
    ,对于
    printf()
    接受
    int
    值的类型为
    %C
    char
    对于可变长度参数自动转换为
    int
  • getchar();
    已删除。终端软件可用于执行程序并查看结果

“w”是由“w”和空字符“\0”组成的字符数组。请尝试
a='w';
启用编译器警告并注意them@AnirudhRamanathan哦,就是这样。谢谢。但是printf没有打印字符串的任何内容,而是打印字符串地址的一个字节。如果他说
printf(“%c”,*a)
然后他会看到他想要的。是的,但是对于他的初始代码,虽然他得到了一些警告,但他应该得到一些垃圾打印出来作为输出。@JerryJeremiah不,他不会。
a
有type
char
,所以他会因为取消引用某个非指针的内容而得到编译错误。嗯。我想我很困惑。如果不是这是一个编译错误,那么它是如何输出0的?可能是一个编译错误,他正在运行以前成功编译的版本,并且该版本正在打印0。@JerryJeremiah原始代码确实编译并将打印一些值。您的建议
printf(“%c”,*a)
如果没有任何其他更改,将发出错误。字符串可能放在与页面对齐的位置,因此我猜地址的至少8位变为
0
#include <stdio.h>
int main(void) {
    int a;
    a = 'w';
    printf("%c", a);
    return 0;
}
#include <stdio.h>
int main(void) {
    char* a;
    a = "w";
    printf("%s", a);
    return 0;
}