Quand devrais-je utiliser des guillemets simples et des guillemets doubles dans la programmation C ou C++?
En C et en C++, les guillemets simples identifient un seul caractère, tandis que les guillemets doubles créent un littéral de chaîne. 'a'
est un littéral de caractère unique, tandis que "a"
est un littéral de chaîne contenant un 'a'
et un terminateur nul (tableau de 2 caractères).
En C++, le type d'un littéral de caractère est char
, mais notez qu'en C, le type d'un littéral de caractère est int
, c'est-à-dire que sizeof 'a'
est égal à 4 dans une architecture où 32 bits (et CHAR_BIT vaut 8), tandis que sizeof(char)
vaut 1 partout.
Certains compilateurs implémentent également une extension permettant des constantes à plusieurs caractères. La norme C99 dit:
6.4.4.4p10: "La valeur d'une constante de caractère entier contenant plusieurs caractères (par exemple, 'ab'), ou contenant un caractère ou une séquence d'échappement ne mappant pas sur un caractère d'exécution à un octet, est définie par la mise en oeuvre. "
Cela pourrait ressembler à ceci, par exemple:
const uint32_t png_ihdr = 'IHDR';
La constante résultante (dans GCC, qui l'implémente) a la valeur que vous obtenez en prenant chaque caractère et en le décalant vers le haut, de sorte que "I" se termine dans les bits les plus significatifs de la valeur 32 bits. Évidemment, vous ne devriez pas compter sur cela si vous écrivez du code indépendant de la plate-forme.
Les guillemets simples sont des caractères (char
), les guillemets doubles sont des chaînes terminées par un zéro (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 de deux caractères, composé de ‘x’
suivi de ‘\0’
Les guillemets simples sont pour un seul caractère. Les guillemets doubles sont pour une chaîne (tableau de caractères). Vous pouvez utiliser des guillemets simples pour construire une chaîne, caractère par caractère, si vous le souhaitez.
char myChar = 'A';
char myString[] = "Hello Mum";
char myOtherString[] = { 'H','e','l','l','o','\0' };
Je cherchais des choses comme: int cc = 'cc'; Il se trouve qu’il s’agit d’une copie d’octets dans un entier. Par conséquent, la manière de voir est que "cc" qui est fondamentalement 2 c sont copiés à 2 octets inférieurs de l'entier cc. 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 une constante multi-caractères et pas une chaîne.
À votre santé
single quote
est pour character
;double quote
est pour string
.En C, les guillemets simples tels que "a" indiquent les constantes de caractère, tandis que "a" est un tableau de caractères, toujours terminé par le caractère 0
Les guillemets doubles sont destinés aux littéraux de chaîne, par exemple:
char str[] = "Hello world";
Les guillemets simples correspondent à des littéraux à un caractère, par exemple:
char c = 'x';
EDIT Comme David l'a dit dans une autre réponse, le type d'un caractère littéral est int
.
La citation simple est utilisée pour le caractère, alors que la citation double est utilisée pour la chaîne.
printf("%c \n",'a');
printf("%s","Hello World");
un bonjour le monde
Si vous avez utilisé ceux-ci dans le cas contraire et avez utilisé guillemets simples pour chaîne et guillemets doubles pour caractère. Ici, ce sera le résultat;
printf("%c \n","a");
printf("%s",'Hello World');
pour la première ligne.Vous aurez une valeur erronée ou inattendue.
tandis 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 également aucun résultat.
Remarque: le langage PHP vous permet d’utiliser facilement les guillemets simples et doubles.
Les guillemets simples désignent un caractère, double une chaîne.
En Java, c'est aussi pareil.
Utilisez guillemet simple avec caractère unique comme:
char ch = 'a';
ici 'a'
est une constante de caractère et est égale à la valeur de ASCII
de char a.
Utilisez les guillemets doubles avec les chaînes suivantes:
char str[] = "foo";
ici "foo"
est un littéral de chaîne.
Vous pouvez utiliser "a"
mais vous ne pouvez pas utiliser 'foo'