C或C ++中的单引号与双引号

什么时候应该在C或C ++编程中使用单引号和双引号?

在C和C ++中,单引号表示单个字符,而双引号表示string。 'a'是单个字符文字,而“a”是包含'a'和空终止符(即2个字符数组)的string文字。

在C ++中,字符字面量的types是char ,但是注意在C中,字符字面量的types是int ,在size是32位(而CHAR_BIT是8)的体系结构中sizeof'a sizeof 'a'是4,而sizeof(char)到处都是1。

一些编译器也实现了一个允许多字符常量的扩展。 C99标准说:

6.4.4.4p10:“包含多个字符(例如'ab')的整数字符常量的值,或包含不映射到单字节执行字符的字符或转义序列的值是实现定义的。 “

这可能看起来像这样,例如:

 const uint32_t png_ihdr = 'IHDR'; 

由此产生的常量(在GCC中实现这个function)具有通过获取每个字符并将其移位而得到的值,以便“I”结束于32位值的最高有效位。 显然,如果你正在编写平台独立的代码,你不应该依赖这个。

单引号是字符( char ),双引号是以空char *结尾的string( char * )。

 char c = 'x'; char *s = "Hello World"; 
  • 'x'是一个整数,表示机器字符集中字母x的数字值
  • "x"是一个由两个字符组成的字符数组,由'x''\0'

单引号是单个字符。 双引号是一个string(字符数组)。 如果你喜欢,你可以使用单引号一次构build一个string。

 char myChar = 'A'; char myString[] = "Hello Mum"; char myOtherString[] = { 'H','e','l','l','o','\0' }; 

在C中,单引号如“a”表示字符常量,而“a”是字符数组,总是以0字符结尾

我正在周围的东西像:int cc ='cc'; 碰巧,它基本上是一个字节复制到一个整数。 因此,查看它的方式是,基本上是2c的“cc”被复制到整数cc的较低的2个字节。 如果你正在寻找一个琐事,那么

printf(“%d%d”,“c”,“cc”); 会给:

99 25443

那是因为25443 = 99 + 256 * 99

所以'cc'是一个多字符常量,而不是一个string。

干杯

双引号用于string文字,例如:

 char str[] = "Hello world"; 

单引号是单字符文字,例如:

 char c = 'x'; 

编辑正如David在另一个答案中所述,字符文字的types是int

  1. single quotecharacter ;
  2. double quotestring

单引号表示一个字符,double表示一个string。

在Java中,它也是一样的。

单个字符使用单引号:

 char ch = 'a'; 

这里'a'是一个char常量,并且等于char a的ASCII值。

对string使用双引号:

 char str[] = "foo"; 

这里"foo"是一个string文字。

它可以使用"a"但不能使用“ foo'

单引号用于字符,双引号用于string。

例如..

  printf("%c \n",'a'); printf("%s","Hello World"); 

产量

你好世界

如果你反过来使用这些,并使用单引号字符和双引号字符。 在这里,这将是结果;

  printf("%c \n","a"); printf("%s",'Hello World'); 

输出:

第一行。你会有垃圾价值或意外。或者你可能有这样的输出..

而对于第二个声明。 你什么都看不到 还有一件事 如果您在此之后有更多的声明。 他们也会给你没有结果。

注意:PHP语言使您能够轻松使用单引号和双引号。