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


当前回答

使用单引号加单字符:

char ch = 'a';

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

对字符串使用双引号:

char str[] = "foo";

这里的"foo"是一个字符串字面量。

可以用a但不能用foo

其他回答

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

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

例如,它可能是这样的:

const uint32_t png_ihdr = 'IHDR';

得到的常量(在GCC中,实现了这一点)的值是通过取每个字符并向上移动它来获得的,这样'I'就会位于32位值的最高位。显然,如果您正在编写与平台无关的代码,就不应该依赖于此。

单引号代表性格; 双引号是字符串。

使用单引号加单字符:

char ch = 'a';

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

对字符串使用双引号:

char str[] = "foo";

这里的"foo"是一个字符串字面量。

可以用a但不能用foo

在C语言中,单引号(如'a')表示字符常量,而"a"是字符数组,总是以\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