Одиночные кавычки и двойные кавычки в C или С++

Когда следует использовать одинарные кавычки и двойные кавычки в программировании на C или С++?

Ответ 1

В C и в C++ одиночные кавычки идентифицируют один символ, а двойные кавычки создают строковый литерал. 'a' - это единственный литеральный символ, а "a" - строковый литерал, содержащий 'a' и нулевой терминатор (это массив с двумя символами).

В C++ тип символьного литерала - char, но обратите внимание, что в C тип символьного литерала является int, то есть sizeof 'a' равен 4 в архитектуре, где ints 32bit (и CHAR_BIT - 8), а sizeof(char) равно 1 всюду.

Ответ 2

Некоторые компиляторы также реализуют расширение, которое допускает многосимвольные константы. В стандарте C99 говорится:

6.4.4.4p10: "Значение целочисленной символьной константы, содержащей больше чем один символ (например, 'ab'), или содержащий символ или выход последовательность, не отображающая однобайтовый символ выполнения, от реализации".

Это может выглядеть так:

const uint32_t png_ihdr = 'IHDR';

Результирующая константа (в GCC, которая реализует это) имеет значение, которое вы получаете, принимая каждый символ и переставляя его, так что "I" попадает в самые значащие биты 32-битного значения. Очевидно, вы не должны полагаться на это, если пишете независимый от платформы код.

Ответ 3

Одиночные кавычки - это символы (char), двойные кавычки - строки с нулевым завершением (char *).

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

Ответ 4

  • 'x' - целое число, представляющее численное значение буква x в наборе символов машин
  • "x" - массив символов, длиной два символа, состоящий из ‘x’, за которым следует ‘\0’

Ответ 5

Одиночные кавычки предназначены для одного символа. Двойные кавычки для строки (массив символов). Вы можете использовать одинарные кавычки для создания строки по одному символу за раз, если хотите.

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

Ответ 6

Я ткнулся с такими вещами, как: int cc = 'cc'; Бывает, что в основном это байтовая копия целого числа. Следовательно, способ взглянуть на это состоит в том, что "cc", который в основном 2 c, копируется в нижние 2 байта целого cc. Если вы ищете мелочи, то

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

99 25443

что, поскольку 25443 = 99 + 256 * 99

Таким образом, 'cc' является многосимвольной константой, а не строкой.

ура

Ответ 7

  • single quote для character;
  • double quote для string.

Ответ 8

В одинарных кавычках C, таких как 'a', указывают символьные константы, тогда как "a" - это массив символов, всегда заканчивающийся символом 0

Ответ 9

Двойные кавычки предназначены для строковых литералов, например:

char str[] = "Hello world";

Одиночные кавычки предназначены для односимвольных литералов, например:

char c = 'x';

EDIT Как сказал Дэвид в другом ответе, тип символьного литерала int.

Ответ 10

Одинарная кавычка используется для символа, тогда как двойная кавычка используется для строки.

Например..

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

Выход

а Hello World

Если вы использовали их в обратном случае и использовали одиночную кавычку для строки и двойной кавычки для символа. Здесь это будет результат;

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

вывод:

для первой строки. У вас будет значение для мусора или неожиданное. Или у вас может быть выход вроде этого.

а для второго оператора. Вы ничего не увидите. Еще одно. Если после этого у вас будет больше заявлений. Они также не дадут вам никакого результата.

Примечание. Язык PHP дает вам возможность легко использовать одиночную и двойную цитату.

Ответ 11

Одиночные кавычки обозначают char, double обозначают строку.

В Java это тоже одно и то же.

Ответ 12

Используйте одиночную кавычку с одиночным char как:

char ch = 'a';

здесь 'a' является константой char и равна значению ASCII char a.

Используйте двойную кавычку со строками как:

char str[] = "foo";

здесь "foo" - строковый литерал.

Хорошо использовать "a", но не использовать его foo'