[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 ++?




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




  • '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'



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 .