我是否正确地说C中'A'和“A”之间的区别是:
'A' - 表示包含A的字符长度为1个字节(8位)。
“A” - 表示一个长度为2个字节(16位)的字符串,它包含A和NULL字符。
我的解释是否正确?
感谢。
答案 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。