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

时间:2010-09-10 09:43:39

标签: c++ c syntax char string-literals

我应该何时在C或C ++编程中使用单引号和双引号?

13 个答案:

答案 0 :(得分:238)

在C和C ++中,单引号标识单个字符,而双引号则创建字符串文字。 'a'是单个字符文字,而"a"是包含'a'和空终止符(即2个char数组)的字符串文字。

在C ++中,字符文字的类型为char,但请注意,在C中,字符文字的类型为int,即sizeof 'a'在架构中为4整数是32位(CHAR_BIT是8),而sizeof(char)到处都是1。

答案 1 :(得分:40)

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

  

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

这可能是这样的,例如:

const uint32_t png_ihdr = 'IHDR';

结果常量(在GCC中实现此目的)具有通过获取每个字符并将其向上移动得到的值,因此“I”最终位于32位值的最高有效位中。显然,如果您正在编写与平台无关的代码,则不应该依赖于此。

答案 2 :(得分:23)

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

char c = 'x';
char *s = "Hello World";

答案 3 :(得分:13)

  • 'x'是一个整数,表示的数值 字母x在机器的字符集中
  • "x"是一个字符数组,两个字符长, 由‘x’后跟‘\0’
  • 组成

答案 4 :(得分:8)

单引号适用于单个字符。双引号用于字符串(字符数组)。如果愿意,您可以使用单引号一次构建一个字符串。

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

答案 5 :(得分:8)

我正在寻找类似的东西:int cc ='cc';碰巧它基本上是一个按字节顺序复制到整数。因此,查看它的方法是将基本为2 c的'cc'复制到整数cc的低2字节。如果你正在寻找琐事,那么

printf("%d %d", 'c', 'cc'); would give:

99 25443

那是因为25443 = 99 + 256 * 99

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

干杯

答案 6 :(得分:7)

  1. single quote适用于character;
  2. double quote适用于string

答案 7 :(得分:5)

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

答案 8 :(得分:5)

双引号用于字符串文字,例如:

char str[] = "Hello world";

单引号用于单字符文字,例如:

char c = 'x';

编辑正如David在另一个回答中所说,字符文字的类型是int

答案 9 :(得分:3)

单引号表示char,double表示字符串。

在Java中,它也是一样的。

答案 10 :(得分:3)

单引号用于字符,而双引号用于字符串。

例如......

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

输出

一 Hello World

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

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

输出:

第一行

。你将有垃圾值或意外。或者你可能有这样的输出..

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

注意:PHP语言为您提供了轻松使用单引号和双引号的灵活性。

答案 11 :(得分:2)

将单引号与单引号一起使用为:

char ch = 'a';

此处'a'是一个char常量,等于char a的ASCII值。

使用带有字符串的双引号:

char str[] = "foo";

此处"foo"是一个字符串文字。

可以使用"a"但是不能使用'foo'

答案 12 :(得分:0)

在C&C ++中,单引号称为字符('a'),而双引号称为字符串(“ Hello”)。区别在于,一个字符只能存储一个字母/数字等。字符串可以存储任何东西。 但也请记住,“ 1”和“ 1”之间存在差异。 如果您输入 cout <<'1'<< endl << 1; 输出将是相同的,但在这种情况下不是:

cout<<int('1')<<endl<<int(1);

这次,第一行将是48。就像当您将字符转换为int时,它会转换为其ascii,而“ 1”的ascii为48。 同样,如果您这样做:

string s="Hi";
s+=48; //This will add "1" to the string
s+="1"; This will also add "1" to the string