C中'A'和“A”文字的区别

时间:2013-05-05 16:11:29

标签: c string literals

我是否正确地说C中'A'“A”之间的区别是:

'A' - 表示包含A的字符长度为1个字节(8位)。

“A” - 表示一个长度为2个字节(16位)的字符串,它包含A和NULL字符。

我的解释是否正确?

感谢。

2 个答案:

答案 0 :(得分:2)

你是完全正确的。但是你必须记住,当你使用rvalues时,它们是不同的。它们的类型为char,可以用作int因为它被隐式转换为ASCII值,而另一个具有类型char*

如果有帮助,让我用代码说明我的观点:

 int num='A';  //Valid, assigns 65 to num
 char test=65;  //Valid, as test will be 'A' after this
 char *ptr="A"  //Valid, assigns  address of string "A" to pointer ptr
 printf("%c,%d",'A','A'); // Output will be   A,65
 printf("%p",(void*)"A"); //Will print address where string "A" is
 printf("%c","A"); ///WRONG
 printf("%s","A"); //Works

编辑对于更细微的细微差别,如果您认为您的理解尚未达到该标记,请参阅Mat的评论。请在几周后进一步阅读C的研究中阅读

答案 1 :(得分:2)

基本上是的。主要的细微差别是字节与字符。你说byte的地方,你应该说char。在大多数系统中,char是一个字节。有一些使用较大的对象来存储char。