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


当前回答

单引号表示字符,双引号表示字符串。

在Java中也是如此。

其他回答

使用单引号加单字符:

char ch = 'a';

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

对字符串使用双引号:

char str[] = "foo";

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

可以用a但不能用foo

在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

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

在c++中,字符字面值的类型是char,但请注意,在C中,字符字面值的类型是int,即sizeof 'a'在一个int为32位的体系结构中是4(而CHAR_BIT为8),而sizeof(char)在任何地方都是1。

声明char / string的不同方法

char char_simple = 'a'; // bytes 1 : -128 to 127 or 0 to 255
signed char char_signed = 'a'; // bytes 1: -128 to 127
unsigned char char_u = 'a';  // bytes 2: 0 to 255

// double quote is for string.
char string_simple[] = "myString";
char string_simple_2[] = {'m', 'S', 't', 'r', 'i', 'n', 'g'};
char string_fixed_size[8] = "myString";
char *string_pointer = "myString"; 
char string_poionter_2 = *"myString";

printf("char = %ld\n", sizeof(char_simple));
printf("char_signed = %ld\n", sizeof(char_signed));
printf("char_u = %ld\n", sizeof(char_u));

printf("string_simple[] = %ld\n", sizeof(string_simple));
printf("string_simple_2[] = %ld\n", sizeof(string_simple_2));
printf("string_fixed_size[8] = %ld\n", sizeof(string_fixed_size));
printf("*string_pointer = %ld\n", sizeof(string_pointer));
printf("string_poionter_2 = %ld\n", sizeof(string_poionter_2));

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

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