2012-03-03 9 views
6

Powiel możliwe:
Why are C character literals ints instead of chars?wielkość typu char w C

ludzie,

Próbowałem wydrukować wielkości char w C z następującego kodu, Mam wynik wyjściowy jako

int, 4 
char, 1 
char?, 4 

Dlaczego ostatni nie jest taki sam jak drugi? Dzięki.

#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 -of-chars. W związku z tym, głosuję, aby zamknąć (choć to nie jest złe pytanie) –

+0

Dyskusja na ten temat została podniesiona przed: http://stackoverflow.com/questions/433895/why-are-c-character-literals -ins-of-of-chars –

+1

Zauważ, że 'sizeof (char)' to z definicji 1 "sizeof()" zwraca wartości w jednostkach char. Które nie są takie same jak bajty! AFAICT nie ma sposobu na uzyskanie rozmiaru struktury w _bytes_ bez wiedzy o platformie (tj. Ile bajtów jest w char). –

Odpowiedz

24

W języku C stała postać jak 'a' ma typ int.

to różni się od C++ i Java, gdzie stała postać jak 'a' ma typ char,