2015-12-14 21 views
-1

这里只是一个示例代码:如何增加字符常量?

#include <stdio.h> 
char a; 
int main(void) 
{ 
a = 'ayy lmao'; 
printf("%c", a); 
getchar(); 
return 0; 
} 

当我执行,我得到一个错误消息说,有“在不断的太多字符”。我如何解决这个问题并允许将多个字符分配给“a”?

+13

“w”是由'w'和空字符'\ 0'组成的字符数组。试试'a ='w';' –

+5

启用编译器警告并留意它们 – Olaf

+0

@AirirhRamanathan哦,就是这样。谢谢。 –

回答

1

"w"是一个字符数组,它被转换为指向数组第一个元素的指针,作为赋值运算符的thr操作数。

它被分配到char,所以它在典型的环境中将变成毫无意义的价值。

尝试

#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; 
} 

注:

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

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

a = 'w'; 

一切属于"被视为一个字符数组。它包含字符后跟终止字符\0

+0

但printf不打印任何字符串的内容 - 它打印字符串地址的一个字节。如果他说'printf(“%c”,* a)',那么他会看到他想要的。 –

+0

是的,但是用他最初的代码,虽然他得到了一些警告,但他应该把一些垃圾作为输出打印出来。 – Fawzan

+0

@JerryJeremiah不,他不会。 'a'的类型是'char',所以他会得到一个编译错误来解引用不是指针的东西。 – MikeCAT