Guillemets simples vs. guillemets doubles en C ou c++

quand devrais-je utiliser des guillemets simples et des guillemets doubles dans la programmation c/" class="blnk">C ou C++?

158
demandé sur Jonathon Reinhart 2010-09-10 13:43:39

12 réponses

en C et en C++, les guillemets simples identifient un seul caractère, tandis que les guillemets doubles créent une chaîne littérale. 'a 'est un simple caractère littéral, tandis que' a 'est une chaîne littérale contenant un' a ' et un terminateur null (qui est un tableau de 2 char).

dans C++ le type d'un caractère littéral est char , mais notez que dans C , le type d'un caractère littéral est int , c'est-à-dire sizeof 'a' est 4 dans une architecture où les ints sont 32bit (et CHAR_BIT est 8), alors que sizeof(char) est 1 partout.

213
répondu David Rodríguez - dribeas 2017-06-11 13:18:19

certains compilateurs implémentent également une extension, qui permet des constantes à plusieurs caractères. La norme C99 dit:

6.4.4.4p10: "la valeur d'une constante de caractère entier contenant plus que d'un caractère (par exemple, "ab"), ou contenant un caractère ou d'échapper à des la séquence ne correspond pas à une un seul octet d'exécution de caractère, est la mise en œuvre définies."

ça pourrait ressembler à ça, par exemple:

const uint32_t png_ihdr = 'IHDR';

la constante résultante (en GCC, qui implémente ceci) a la valeur que vous obtenez en prenant chaque caractère et en le déplaçant vers le haut, de sorte que 'I' se retrouve dans les bits les plus significatifs de la valeur de 32 bits. Évidemment, vous ne devriez pas compter sur cela si vous écrivez le code indépendant de plate-forme.

38
répondu unwind 2016-10-18 01:17:47

les guillemets simples sont des caractères ( char ), les guillemets doubles sont des chaînes à terminaison nulle ( char * ).

char c = 'x';
char *s = "Hello World";
22
répondu Eiko 2010-09-10 09:45:51
  • 'x' est un entier représentant la valeur numérique de la lettre x dans le jeu de caractères de la machine
  • "x" est un tableau de caractères, deux caractères, composé de ‘x’ suivi de ‘"151930920"’
10
répondu martynas 2014-05-18 14:01:02

je fouillais autour de trucs comme: int cc = 'cc'; il se trouve que c'est essentiellement une copie byte-wise à un entier. Par conséquent, la façon de le regarder est que 'cc' qui est essentiellement 2 c ' sont copiés sur les 2 octets inférieurs du cc entier. Si vous cherchez une anecdote, alors

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

99 25443

c'est parce que 25443 = 99 + 256*99

Donc " cc " est un multi-caractère constant et pas une chaîne de caractères.

Cheers

7
répondu sanket 2018-06-13 16:31:43

guillemets Simples sont pour un seul caractère. Les guillemets sont pour une chaîne de caractères (tableau de caractères). Vous pouvez utiliser des guillemets simples pour construire une chaîne un caractère à la fois, si vous voulez.

char myChar     = 'A';
char myString[] = "Hello Mum";
char myOtherString[] = { 'H','e','l','l','o','"151900920"' };
6
répondu Graham Borland 2010-09-10 09:46:31
  1. single quote est pour character ;
  2. double quote pour string .
6
répondu bygreencn 2011-09-07 10:22:28

les guillemets doubles sont pour les caractères littéraux à cordes, par exemple:

char str[] = "Hello world";

les guillemets simples sont pour les caractères littéraux simples, par exemple:

char c = 'x';

EDIT comme David l'a déclaré dans une autre réponse, le type d'un caractère littéral est int .

5
répondu Oliver Charlesworth 2010-09-10 10:00:29

en C les guillemets simples tels que "a" indiquent les constantes de caractères tandis que "a" est un tableau de caractères, toujours terminé avec le caractère 0

5
répondu Jens Gustedt 2010-09-10 10:01:38

les guillemets simples indiquent un caractère, les guillemets doubles indiquent une chaîne.

En Java, c'est aussi le même.

3
répondu adiggo 2015-06-22 15:21:51

utiliser une seule citation avec une seule valeur comme:

char ch = 'a';

ici 'a' est une constante de char et est égale à la valeur ASCII de char A.

utilisez double citation avec des chaînes comme:

char str[] = "foo";

ici "foo" est une chaîne littérale.

bien utiliser "a" mais ce n'est pas correct d'utiliser ' foo'

2
répondu codaddict 2010-09-10 09:50:04

simple citation est utilisé pour le caractère, tandis que double citation est utilisé pour la chaîne de caractères.

par exemple..

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

sortie

un Bonjour Tout Le Monde

si vous avez utilisé ceux-ci dans le cas vice versa et utilisé une citation simple pour la chaîne et une citation double pour le caractère. Ici, ce sera le résultat;

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

sortie:

pour la première ligne.Vous aurez valeur d'ordures ou inattendu.ou vous avez peut-être sortie comme celle-ci..

alors que pour la deuxième déclaration. Vous ne verrez rien. Une chose de plus. Si vous avez plus de déclaration après cela. Ils ne vous donneront pas non plus de résultat.

Note: le langage PHP vous donne la flexibilité d'utiliser des citations simples et doubles facilement.

2
répondu Hafiz Shehbaz Ali 2015-08-11 13:57:18