2015-12-23 22 views
5
char c = 'A'; 
printf("%d\n",sizeof(c));// output = 1 
printf("%d\n",sizeof('A')); // output = 4 

Perché l'operatore sizeof fornisce un'uscita diversa per lo stesso carattere? Please HelpInformazioni sulla taglia dell'operatore in C

+0

Perché "A" non ha un tipo. Viene interpretato come un 'int'. –

+2

@DavidHoelzer ha un tipo e il tipo è 'int' –

+0

Abbastanza corretto. Dal momento che "A" non è cast in alcun modo è un "int" per definizione. Mi sono concentrato maggiormente sul fatto che c'era una differenza nel modo in cui erano definiti. Grazie! –

risposta

6

c è una variabile di tipo char; la sua dimensione è 1 byte.

'A' è un valore letterale int - non chiedermi perché lo standard lo dice. La sua dimensione è di 4 byte sulla tua piattaforma (lo stesso di sizeof(1)).

+0

Nei vecchi tempi, le persone utilizzavano caratteri multibyte, come 'xy'. Il codice UNIX PDP11 aveva un sacco di quella roba. Per lo più è andato via quando hanno portato la C su macchine bigendiane. C++ ha risolto questo problema ... le costanti dei caratteri sono caratteri. Questo è uno dei pochi modi in cui C non è un sottoinsieme appropriato di C++. –

Problemi correlati