J'ai essayé
printf("%d, %d\n", sizeof(char), sizeof('c'));
et a obtenu 1, 4 comme sortie. Si la taille d'un caractère est égale à un, pourquoi est-ce que 'c'
me donner 4 ? Je suppose que c'est parce que c'est un nombre entier. Donc quand je fais char ch = 'c';
Y a-t-il une conversion implicite, sous le capot, de cette valeur de 4 octets en une valeur de 1 octet lorsqu'elle est assignée à la variable char ?
3 votes
Je pense que c'est lié à la promotion automatique des nombres entiers. Quelqu'un qui a plus de faits que de croyances postera une réponse factuelle.
2 votes
@Roger : Il demande la différence entre C et C++ sizeof('a'), alors que j'ai demandé s'il y avait une conversion ? Voir le corps de la question. J'ai déjà déduit que 'a' est un entier en C.
0 votes
Je dois remercier "David Rodríguez - dribeas" pour avoir signalé que le lien dans ma réponse est incorrect. Je supprime ma réponse. legends2k, la bonne réponse devrait aller à Peter ou Neil, à mon humble avis.
0 votes
J'ai changé la réponse acceptée maintenant. Merci d'avoir corrigé David Rodríguez - dribeas.
3 votes
Vous avez obtenu votre réponse, mais un commentaire : vous ne pouvez pas imprimer
size_t
des objets avec"%d"
. Puisquesizeof
donnesize_t
asize_t
vous devez l'imprimer avec"%zu"
(C99) ou le lancer surunsigned long
et imprimer avec"%lu"
(C89).2 votes
stackoverflow.com/questions/433895/