2012-03-03 11 views
6

Duplicar posibles:
Why are C character literals ints instead of chars?tamaño de tipo char en C

gente,

Probé para imprimir el tamaño de Char en C. Con el siguiente código, Obtuve el resultado como

int, 4 
char, 1 
char?, 4 

¿Por qué el último no es el mismo que el segundo? Gracias.

#include <stdio.h> 

main() 
{ 
    int a = 2; 
    char b = '2'; 
    printf("int, %d\n",sizeof(a)); 
    printf("char, %d\n",sizeof(b)); 
    printf("char?, %d\n",sizeof('a')); 
} 
+0

http://stackoverflow.com/questions/433895/why-are-c-character-literals-ints-instead -de-caracteres. A la luz de esto, voy a votar para cerrar (aunque no es una mala pregunta) –

+0

La discusión sobre este tema se ha planteado antes: http://stackoverflow.com/questions/433895/why-are-c-character-literals -ints-instead-of-chars –

+1

Tenga en cuenta que 'sizeof (char)' es 1, por definición --- 'sizeof()' devuelve valores en unidades de caracteres. ¡Lo cual no es lo mismo que bytes! AFAICT no hay forma de obtener el tamaño de una estructura en _bytes_ sin conocimiento de la plataforma (es decir, cuántos bytes hay en un char). –

Respuesta

24

En C, una constante de carácter como 'a' tiene tipo int.

Esto es diferente de C++ y Java, donde una constante de caracteres como 'a' tiene tipo char,