2

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

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

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

我的解释正确吗?

谢谢。

4

2 回答 2

2

您是绝对正确的。但是您必须记住,当您使用它们时,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 时再阅读它。

于 2013-05-05T16:15:52.500 回答
2

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

于 2013-05-05T16:16:40.833 回答