在C或c++编程中什么时候应该使用单引号和双引号?
单引号是字符(char),双引号是空结束的字符串(char *)。
char
char *
char c = 'x'; char *s = "Hello World";
在C和c++中,单引号标识单个字符,而双引号创建字符串字面量。'a'是一个单独的a字符字面值,而"a"是一个字符串字面值,包含'a'和一个空结束符(这是一个2字符数组)。
'a'
"a"
在c++中,字符字面值的类型是char,但请注意,在C中,字符字面值的类型是int,即在int为32位(CHAR_BIT为8)的体系结构中,sizeof 'a'为4,而sizeof(char)处处为1。
int
sizeof 'a'
sizeof(char)
在C语言中,诸如'a'这样的单引号表示字符常量,而"a"是字符数组,总是以\0字符结束
\0
双引号用于字符串字面量,例如:
char str[] = "Hello world";
单引号用于单字符字面量,例如:
char c = 'x';
正如David在另一个回答中所述,字符字面量的类型是int。
单引号用于单个字符。双引号用于字符串(字符数组)。如果您愿意,可以使用单引号一次一个字符地构建字符串。
char myChar = 'A'; char myString[] = "Hello Mum"; char myOtherString[] = { 'H','e','l','l','o','\0' };
使用单引号加单字符:
char ch = 'a';
这里'a'是一个char常量,等于char a的ASCII值。
ASCII
对字符串使用双引号:
char str[] = "foo";
这里"foo"是一个字符串字面值。
"foo"
它可以使用"a",但它不能使用'foo'
foo'
single quote
character
double quote
string
一些编译器还实现了一个扩展,允许多字符常量。C99标准说:
6.4.4.4p10: "包含更多的整型字符常量的值 多于一个字符(如'ab'),或 包含一个字符或转义 不映射到 单字节执行字符,是 实现定义。" < / p >
例如,它可能是这样的:
const uint32_t png_ihdr = 'IHDR';
得到的常量(在GCC中,实现了这一点)的值是通过取每个字符并向上移动它来获得的,这样'I'就会位于32位值的最高位。显然,如果您正在编写与平台无关的代码,就不应该依赖于此。
我到处乱戳,比如:int cc = 'cc';它基本上是按字节顺序复制到一个整数。因此,看待它的方式是'cc',基本上是2个c被复制到整数cc的低2个字节。如果你正在寻找一个琐事,那么
printf("%d %d", 'c', 'cc'); would give:
99 25443
这是因为25443 = 99 + 256*99
因此,'cc'是一个多字符常量,不是一个字符串。
干杯
'x'
"x"
‘x’
‘\0’
单引号表示字符,双引号表示字符串。
在Java中也是如此。
单引号用于字符,双引号用于字符串。
printf("%c \n",'a'); printf("%s","Hello World");
a Hello World
如果你在相反的情况下使用这些,并使用单引号字符串和双引号字符,这将是结果:
printf("%c \n","a"); printf("%s",'Hello World');
对于第一行。你将得到一个垃圾值或意外值,或者你可能得到这样的输出:
�
而对于第二个表述,你什么都看不到。还有一件事,如果你在这之后有更多的语句,它们也不会给你任何结果。
注意:PHP语言为您提供了轻松使用单引号和双引号的灵活性。
在C &c++中单引号被称为字符('a'),而双引号被称为字符串("Hello")。不同的是,一个字符可以存储任何东西,但只能存储一个字母/数字等。字符串可以存储任何东西。 但也要记住,“1”和“1”之间是有区别的。 如果你输入 cout< & lt; ' 1 ' & lt; & lt; endl< & lt; 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
虽然我确信这并没有回答最初的提问者所问的问题,万一你最终在这里寻找文字整数中的单引号,就像我有……
c++ 14增加了添加数字字面值中间的单引号(')的功能,以便为数字添加一些可视分组。
'
constexpr int oneBillion = 1'000'000'000; constexpr int binary = 0b1010'0101; constexpr int hex = 0x12'34'5678; constexpr double pi = 3.1415926535'8979323846'2643383279'5028841971'6939937510;