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

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

Barbara Streisand
Barbara Streisandoriginal
2024-12-21 14:28:10375parcourir

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

Pourquoi 'a' nécessite plus d'octets en C qu'en C

Lors de l'examen de la sortie de l'extrait de code :

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

on peut remarquer que la taille de la constante de caractère 'a' diffère entre C et C . Examinons le raisonnement derrière cette disparité.

En C, une constante de caractère comme « a » est stockée sous la forme d'un entier, qui a une taille de 4 octets ou une valeur spécifique à l'implémentation. Cependant, en C , le type de 'a' est explicitement char, qui n'occupe que 1 octet.

Cette distinction découle du traitement différent des constantes de caractères dans les deux langages. C traite les constantes de caractères comme des entiers (de type int), tandis que C introduit un type char distinct pour les caractères.

Par conséquent, en C, « a » est stocké sous forme d'entier, expliquant sa taille de 4 octets. En revanche, en C , « a » est un caractère (char), ce qui donne une taille de 1 octet. Cette différence met en évidence l'une des subtiles variations entre les deux langues.

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:
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