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++?
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.
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.
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";
-
'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"’
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
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"' };
-
single quote
est pourcharacter
; -
double quote
pourstring
.
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
.
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
les guillemets simples indiquent un caractère, les guillemets doubles indiquent une chaîne.
En Java, c'est aussi le même.
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'
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.