Когда я должен использовать одинарные и двойные кавычки в программировании на C или C ++?
Когда я должен использовать одинарные и двойные кавычки в программировании на C или C ++?
Ответы:
В C и C ++ одинарные кавычки обозначают один символ, а двойные - строковый литерал. 'a'
представляет собой символьный литерал, а "a"
строковый литерал содержит 'a'
терминатор и нулевой символ (это массив из 2 символов).
В C ++ тип символьного литерала есть char
, но обратите внимание, что в C тип символьного литерала равен 4 int
, то sizeof 'a'
есть 4 в архитектуре, где целые числа 32-битные (а CHAR_BIT равно 8), тогда sizeof(char)
как 1 везде 1.
Некоторые компиляторы также реализуют расширение, которое допускает многосимвольные константы. Стандарт C99 гласит:
6.4.4.4p10: «Значение целочисленной символьной константы, содержащей более одного символа (например,« ab »), или содержащей символ или escape-последовательность, которая не отображается на однобайтовый символ выполнения, определяется реализацией. "
Это может выглядеть так, например:
const uint32_t png_ihdr = 'IHDR';
Результирующая константа (в GCC, которая реализует это) имеет значение, которое вы получаете, беря каждый символ и сдвигая его вверх, так что «I» заканчивается в старших значащих битах 32-битного значения. Очевидно, вы не должны полагаться на это, если вы пишете независимый от платформы код.
Одинарные кавычки - это символы ( char
), двойные кавычки - строки с нулем в конце ( char *
).
char c = 'x';
char *s = "Hello World";
const char *
.
Одиночные кавычки предназначены для одного символа. Двойные кавычки для строки (массив символов). Вы можете использовать одинарные кавычки для создания строки по одному символу за раз, если хотите.
char myChar = 'A';
char myString[] = "Hello Mum";
char myOtherString[] = { 'H','e','l','l','o','\0' };
Я возился с вещами вроде: int cc = 'cc'; Бывает, что это в основном побайтная копия целого числа. Следовательно, способ взглянуть на это состоит в том, что 'cc', который в основном равен 2 c, копируется в младшие 2 байта целого числа cc. Если вы ищете мелочи, то
printf("%d %d", 'c', 'cc'); would give:
99 25443
это потому что 25443 = 99 + 256 * 99
Таким образом, «cc» - это многосимвольная константа, а не строка.
ура
Двойные кавычки предназначены для строковых литералов, например:
char str[] = "Hello world";
Одинарные кавычки предназначены для односимвольных литералов, например:
char c = 'x';
РЕДАКТИРОВАТЬ Как сказал Дэвид в другом ответе, тип литерала символа int
.
char str[] = {'H','e','l','l','o'};
, и str
было бы не иметь нулевой терминатор.
str
не строка (по крайней мере, не строка в стиле C, которая определена как NTBS).
char[]
(что люди часто называют «строками»), заканчивается нулем.
"hello" /*seamlessly connected to*/ "world"
. И это может иметь смысл для закомментированных многострочных сообщений.
В C одинарные кавычки, такие как «a», указывают символьные константы, тогда как «a» - это массив символов, всегда заканчивающийся символом 0
Одинарная кавычка используется для символа, а двойная кавычка используется для строки.
printf("%c \n",'a');
printf("%s","Hello World");
Hello World
Если вы использовали их в обратном случае и использовали одинарную кавычку для строки и двойную кавычку для символа. Здесь это будет результат;
printf("%c \n","a");
printf("%s",'Hello World');
для первой строки. У вас будет значение мусора или неожиданное. Или у вас может быть вывод как это ..
�
пока для второго утверждения. Вы ничего не увидите. Еще одна вещь. Если у вас есть больше заявлений после этого. Они также не дадут вам никакого результата.
Примечание: язык PHP позволяет легко использовать одинарные и двойные кавычки.
Одинарные кавычки обозначают символ, двойные обозначают строку.
В Java это также то же самое.
Используйте одинарную кавычку с одинарным символом как:
char ch = 'a';
здесь 'a'
символьная константа и равнаASCII
значению char a.
Используйте двойные кавычки со строками как:
char str[] = "foo";
Вот "foo"
строковый литерал.
Его можно использовать, "a"
но его нельзя использоватьfoo'