Citazioni singole e virgolette doppie in C o C ++

Quando dovrei usare le virgolette singole e le doppie virgolette nella programmazione C o C ++?

In C e in C ++ le virgolette singole identificano un singolo carattere, mentre le virgolette doppie creano una stringa letterale. ‘a’ è un singolo carattere letterale, mentre “a” è un letterale stringa contenente un ‘a’ e un terminatore nullo (cioè un array di 2 caratteri).

In C ++ il tipo di carattere letterale è char , ma si noti che in C, il tipo di carattere letterale è int , che è sizeof 'a' è 4 in un’architettura in cui gli interi sono 32 bit (e CHAR_BIT è 8), mentre sizeof(char) è 1 ovunque.

Alcuni compilatori implementano anche un’estensione, che consente costanti multi-carattere. Lo standard C99 dice:

6.4.4.4p10: “Il valore di una costante di carattere intero contenente più di un carattere (es. ‘Ab’), o contenente un carattere o una sequenza di escape che non è mappata su un carattere di esecuzione a byte singolo, è definito dall’implementazione. ”

Questo potrebbe apparire come questo, ad esempio:

 const uint32_t png_ihdr = 'IHDR'; 

La costante risultante (in GCC, che implementa questo) ha il valore che ottieni prendendo ciascun carattere e spostandolo in alto, in modo che “I” finisca nei bit più significativi del valore a 32 bit. Ovviamente, non dovresti fare affidamento su questo se stai scrivendo codice indipendente dalla piattaforma.

Le virgolette singole sono caratteri ( char ), le virgolette doppie sono stringhe con terminazione null ( char * ).

 char c = 'x'; char *s = "Hello World"; 
  • 'x' è un numero intero che rappresenta il valore numerico della lettera x nel set di caratteri della macchina
  • "x" è una matrice di caratteri, lunga due caratteri, composta da 'x' seguita da '\0'

Le virgolette singole sono per un singolo carattere. Le virgolette sono per una stringa (matrice di caratteri). Puoi usare le virgolette singole per build una stringa un carattere alla volta, se vuoi.

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

Stavo curiosando su cose come: int cc = ‘cc’; Succede che in pratica è una copia in byte per un intero. Quindi il modo di guardarlo è che ‘cc’ che è fondamentalmente 2 c sono copiati in 2 byte inferiori dell’intero cc. Se stai cercando una curiosità, allora

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

99 25443

questo perché 25443 = 99 + 256 * 99

Quindi ‘cc’ è una costante multi-carattere e non una stringa.

Saluti

Le virgolette sono per i letterali stringa, ad esempio:

 char str[] = "Hello world"; 

Le virgolette singole sono per letterali a carattere singolo, ad esempio:

 char c = 'x'; 

EDIT Come David ha dichiarato in un’altra risposta, il tipo di carattere letterale è int .

In C le virgolette singole come ‘a’ indicano le costanti dei caratteri mentre “a” è una matrice di caratteri, sempre terminata con il carattere 0

  1. single quote è per character ;
  2. double quote è per la string .

Le virgolette singole indicano un carattere, il doppio indica una stringa.

In Java, è anche lo stesso.

Usa la citazione singola con un singolo carattere come:

 char ch = 'a'; 

qui 'a' è una costante char ed è uguale al valore ASCII di char a.

Usa la doppia citazione con le stringhe come:

 char str[] = "foo"; 

qui "foo" è una stringa letterale.

Va bene usare "a" ma non va bene usare ‘ foo'

La virgoletta singola viene utilizzata per il carattere, mentre la doppia virgola viene utilizzata per la stringa.

Per esempio..

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

Produzione

un mondo Ciao

Se li hai usati nel caso inverso e hai usato virgolette singole per stringhe e virgolette doppie per carattere. Qui, questo sarà il risultato;

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

produzione :

per la prima riga. Avrai il valore spazzatura o imprevisto. Oppure potresti avere un risultato simile a questo ..

mentre per la seconda affermazione. Non vedrai nulla. Una cosa in più Se hai più dichiarazioni dopo questo. Non ti daranno alcun risultato.

Nota: il linguaggio PHP ti dà la flessibilità di usare facilmente virgolette singole e doppie.