Maison > développement back-end > C++ > Pourquoi `sizeof('a')` diffère-t-il entre C et C ?

Pourquoi `sizeof('a')` diffère-t-il entre C et C ?

Patricia Arquette
Libérer: 2024-12-26 07:22:29
original
309 Les gens l'ont consulté

Why Does `sizeof('a')` Differ Between C and C  ?

Différences de taille des caractères en C et C

En C et C, l'opérateur sizeof fournit des informations sur la taille d'un type de données ou variable. En examinant le résultat d'un programme à l'aide de cet opérateur, les programmeurs peuvent apprendre des détails cruciaux sur les données avec lesquelles ils travaillent. Cependant, étonnamment, l'opérateur sizeof donne des résultats différents lorsqu'il est appliqué à une valeur de caractère comprise entre C et C .

Considérez le programme C suivant :

#include <stdio.h>
int main(void) {
    printf("sizeof(char) = %zu\n", sizeof(char));
    printf("sizeof('a')  = %zu\n", sizeof('a'));
}
Copier après la connexion

Lors de son exécution, ce programme affichera :

sizeof(char) = 1
sizeof('a')  = 4
Copier après la connexion

Maintenant, regardons le même programme écrit en C :

#include <iostream>
int main() {
    std::cout << "sizeof(char) = " << sizeof(char) << std::endl;
    std::cout << "sizeof('a')  = " << sizeof('a') << std::endl;
}
Copier après la connexion

Lors de son exécution en C , il affiche :

sizeof(char) = 1
sizeof('a')  = 1
Copier après la connexion

La principale différence réside dans la façon dont C et C représentent les constantes de caractères en interne. En C, une constante de caractère comme « a » est traitée comme un entier avec la valeur ASCII correspondante. C'est pourquoi sizeof('a') renvoie 4 en C, car la taille d'un entier est généralement de 4 octets. D'autre part, en C , les constantes de caractère sont traitées comme le type de données char, qui a une taille de 1 octet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal