2012-03-03 19 views
6

Eventuali duplicati:
Why are C character literals ints instead of chars?dimensioni di tipo char in C

gente,

ho cercato di stampare le dimensioni del carattere in C. Con questo codice, Ho ottenuto il risultato come

int, 4 
char, 1 
char?, 4 

Perché l'ultimo non è uguale al secondo? Grazie.

#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 -Di-caratteri. Alla luce di questo, sto votando per chiudere (anche se non è una cattiva domanda) –

+0

Discussione su questo argomento è stata sollevata prima: http://stackoverflow.com/questions/433895/why-are-c-character-literals -ints-instead-of-chars –

+1

Si noti che 'sizeof (char)' è 1, per definizione --- 'sizeof()' restituisce valori in unità di carattere. Che non sono uguali ai byte! AFAICT non è possibile ottenere la dimensione di una struttura in _bytes_ senza conoscere la piattaforma (cioè, quanti byte ci sono in un char). –

risposta

24

In C, una costante personaggio come 'a' ha tipo int.

Questo è diverso da C++ e Java, dove una costante personaggio come 'a' è digitare char,