Aspas simples versus aspas duplas em C ou C ++

Quando devo usar aspas simples e aspas duplas na programação C ou C ++?

Em C e C ++, aspas simples identificam um único caractere, enquanto as aspas duplas criam um literal de string. ‘a’ é um único literal de caractere, enquanto “a” é um literal de string contendo um ‘a’ e um terminador nulo (que é um array de 2 caracteres).

Em C ++ o tipo de literal de caractere é char , mas note que em C, o tipo de literal de um caracter é int , que é sizeof 'a' é 4 em uma arquitetura onde ints são 32bit (e CHAR_BIT é 8), enquanto sizeof(char) é 1 em todos os lugares.

Alguns compiladores também implementam uma extensão, que permite constantes de vários caracteres. O padrão C99 diz:

6.4.4.4p10: “O valor de uma constante de caractere inteiro contendo mais de um caractere (por exemplo, ‘ab’), ou contendo um caractere ou uma seqüência de escape que não mapeia para um caractere de execução de byte único, é definido pela implementação. ”

Isso poderia ser assim, por exemplo:

 const uint32_t png_ihdr = 'IHDR'; 

A constante resultante (no GCC, que implementa isso) tem o valor que você obtém pegando cada caractere e deslocando-o, de modo que ‘eu’ termine nos bits mais significativos do valor de 32 bits. Obviamente, você não deve confiar nisso se estiver escrevendo código independente de plataforma.

Aspas simples são caracteres ( char ), aspas duplas são sequências terminadas em nulo ( char * ).

 char c = 'x'; char *s = "Hello World"; 
  • 'x' é um inteiro, representando o valor numérico da letra x no conjunto de caracteres da máquina
  • "x" é uma matriz de caracteres, dois caracteres de comprimento, consistindo de 'x' seguido de '\0'

Aspas simples são para um único caractere. Aspas duplas são para uma string (matriz de caracteres). Você pode usar aspas simples para criar uma sequência de caracteres, um caractere por vez, se desejar.

 char myChar = 'A'; char myString[] = "Hello Mum"; char myOtherString[] = { 'H','e','l','l','o','\0' }; 

Eu estava bisbilhotando coisas como: int cc = ‘cc’; Acontece que é basicamente uma cópia de byte para um inteiro. Portanto, a maneira de ver isso é que ‘cc’, que é basicamente 2 c’s, é copiado para diminuir 2 bytes do inteiro cc. Se você está procurando por uma trivialidade, então

 printf("%d %d", 'c', 'cc'); would give: 

99 25443

isso é porque 25443 = 99 + 256 * 99

Então, ‘cc’ é uma constante de vários caracteres e não uma string.

Felicidades

Aspas duplas são para literais de string, por exemplo:

 char str[] = "Hello world"; 

Aspas simples são para literais de caracteres únicos, por exemplo:

 char c = 'x'; 

EDIT Como David afirmou em outra resposta, o tipo de um literal de caractere é int .

Em C aspas simples, como ‘a’, indicam constantes de caractere, enquanto “a” é uma matriz de caracteres, sempre terminada com o caractere 0

  1. single quote são para character ;
  2. double quote são para string .

Aspas simples denotam um caractere duplo denotam uma string.

Em Java, também é o mesmo.

Use aspas simples com caractere único como:

 char ch = 'a'; 

aqui 'a' é uma constante de char e é igual ao valor ASCII de char a.

Use aspas duplas com strings como:

 char str[] = "foo"; 

aqui "foo" é uma string literal.

Não há problema em usar "a" mas não é aceitável usar ” foo'

Aspas simples são usadas para caractere, enquanto aspas duplas são usadas para string.

Por exemplo..

  printf("%c \n",'a'); printf("%s","Hello World"); 

Saída

um mundo Olá

Se você usou estes em caso vice-versa e usou aspas simples para string e aspas duplas para caractere. Aqui, isso será resultado;

  printf("%c \n","a"); printf("%s",'Hello World'); 

saída:

para primeira linha.Você terá valor de lixo ou inesperado.ou você pode ter saída como este ..

enquanto para a segunda declaração. Você não verá nada. Mais uma coisa. Se você tiver mais declarações depois disso. Eles também não lhe darão nenhum resultado.

Nota: A linguagem PHP oferece flexibilidade para usar aspas simples e duplas facilmente.