Одинарные кавычки и двойные кавычки в C или C++
когда я должен использовать одинарные и двойные кавычки в программировании на c/" class="blnk">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 последовательность, которая не является однобайтовый символ выполнения, является реализация-определено."
Это может выглядеть так, например:
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';
редактировать как Дэвид заявил в другом ответе, тип символьного литерала 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');
выход :
для первой строки.У вас будет мусорная ценность или неожиданность.или у вас может быть такой выход..
�
while для второго оператора. Вы ничего не увидите. И еще одно. Если у вас есть еще заявление после этого. Они также не дадут вам никакого результата.
Примечание: язык PHP дает вам гибкость использовать одиночную и двойную цитату легко.