我是否正确地说C 中的“A”和“A”之间的区别是:
'A' - 表示包含 A 的 1 字节(8 位)长的字符。
“A” - 表示一个 2 字节(16 位)长的字符串,其中包含一个 A 和一个 NULL 字符。
我的解释正确吗?
谢谢。
您是绝对正确的。但是您必须记住,当您使用它们时,rvalues
它们是不同的。一个具有 type char
,并且可以用作 an int
,因为它隐式转换为 ASCII 值,而另一个具有 type 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 时再阅读它。
基本上是的。主要的细微差别是字节与字符。你说字节的地方,你应该说字符。在大多数系统上,一个 char 是一个字节。有一些使用较大的对象来存储字符。