Одинарные кавычки и двойные кавычки в 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','' };

  1. single quote на character;
  2. double quote на string.

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

char str[] = "Hello world";

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

char c = 'x';

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


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


одинарные кавычки обозначают символ, двойные - строку.

в Java это тоже самое.


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

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 дает вам гибкость использовать одиночную и двойную цитату легко.