'' pour un unique caractère "" pour une chaine de caractère.
Ensuite attention à ta manière de pointer vers un littéral, il doit être en lecture seul.
char *ptr = "plop";//dangereux (peut être un warning associé)
const char *ptr="plop";//ok, et juste en lecture seul
char ptr[] = "plop";//ok et on peut modifier le tableau de caractère
Effectivement... Alors un char* ne contient rien d'autre qu'une adresse, il ne contiendra pas "bonjour" ou "'}", il contiendra 54921, 489633 ou n'importe quelle autre valeur du genre. En l’occurrence, cette adresse mène à un endroit de la mémoire où "bonjour" a été stocké, l'adresse étant celle du premier caractère 'b'.
Au passage, la syntaxe pour un caractère constant est 'b', celle d'une chaîne de caractère (constante) est "bonjour".
Ta ligne 4 contient 2 caractères, elle devrait être "\"}", l'antislash permettant d'échapper le second " qui doit faire partie de la chaîne.
Pour des raisons mystérieuses (pour le débutant) il n'est pas tout à fait interdit d'écrire
char c = "abc";
en s'attirant certes le message warning: initialization makes integer from pointer without a cast
En effet, "abc" est (se dégrade en) l'adresse d'une zone contenant les 3 caracteres etc. et dans les principes de base du C historique, il y avait l'idée d'on peut interchanger entiers et pointeurs, et comme un char est un petit entier, voila voila.
Amusant aussi
char c = 'abc';
qui s'en tire aussi avec un avertissement warning: multi-character character constant
En effet : 'abc' est un nombre calculé à partir des caractères (souvent, le nombre int32 qui correspond aux 4 octets, ce qui n'est évidemment pas portable)
En voila un langage qu'il a été bien conçu :-)
PS: à quoi ça sert ? Disposer d'identifiants lisibles pour des switches par exemple
switch (tag) {
case 'foo' :...;
case 'bar' : ..;
...
Mauvaise idée: les énumérations font mieux le job, et si on fait une faute, le compilateur aura une chance de s'en rendre compte.
- Edité par michelbillaud 17 février 2020 à 8:56:29
Problème sémantique Char
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Bonhomme !! | Jeu de plateforme : Prototype.