Когда я должен использовать одинарные и двойные кавычки в программировании на 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 *
).источник
const char *
.'x'
является целым числом, представляющим числовое значение буквы x в наборе символов машины"x"
массив символов длиной два символа, состоящий из‘x’
следующих‘\0’
источник
Одиночные кавычки предназначены для одного символа. Двойные кавычки для строки (массив символов). Вы можете использовать одинарные кавычки для создания строки по одному символу за раз, если хотите.
источник
Я возился с вещами вроде: int cc = 'cc'; Бывает, что это в основном побайтная копия целого числа. Следовательно, способ взглянуть на это состоит в том, что 'cc', который в основном равен 2 c, копируется в младшие 2 байта целого числа cc. Если вы ищете мелочи, то
99 25443
это потому что 25443 = 99 + 256 * 99
Таким образом, «cc» - это многосимвольная константа, а не строка.
ура
источник
single quote
дляcharacter
;double quote
дляstring
.источник
Двойные кавычки предназначены для строковых литералов, например:
Одинарные кавычки предназначены для односимвольных литералов, например:
РЕДАКТИРОВАТЬ Как сказал Дэвид в другом ответе, тип литерала символа
int
.источник
char str[] = {'H','e','l','l','o'};
, иstr
было бы не иметь нулевой терминатор.str
не строка (по крайней мере, не строка в стиле C, которая определена как NTBS).char[]
(что люди часто называют «строками»), заканчивается нулем."hello" /*seamlessly connected to*/ "world"
. И это может иметь смысл для закомментированных многострочных сообщений.В C одинарные кавычки, такие как «a», указывают символьные константы, тогда как «a» - это массив символов, всегда заканчивающийся символом 0
источник
Одинарная кавычка используется для символа, а двойная кавычка используется для строки.
Например..
Вывод
Hello World
Если вы использовали их в обратном случае и использовали одинарную кавычку для строки и двойную кавычку для символа. Здесь это будет результат;
вывод :
для первой строки. У вас будет значение мусора или неожиданное. Или у вас может быть вывод как это ..
�
пока для второго утверждения. Вы ничего не увидите. Еще одна вещь. Если у вас есть больше заявлений после этого. Они также не дадут вам никакого результата.
Примечание: язык PHP позволяет легко использовать одинарные и двойные кавычки.
источник
Одинарные кавычки обозначают символ, двойные обозначают строку.
В Java это также то же самое.
источник
Используйте одинарную кавычку с одинарным символом как:
здесь
'a'
символьная константа и равнаASCII
значению char a.Используйте двойные кавычки со строками как:
Вот
"foo"
строковый литерал.Его можно использовать,
"a"
но его нельзя использоватьfoo'
источник