[c++] Citazioni singole e virgolette doppie in C o C ++



Answers

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.

Question

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




  • '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 indicano un carattere, il doppio indica una stringa.

In Java, è anche lo stesso.




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'); darebbe:

99 25443

questo perché 25443 = 99 + 256 * 99

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

Saluti




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.




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 .




Links