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