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
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
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)
).
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++. –
Perché "A" non ha un tipo. Viene interpretato come un 'int'. –
@DavidHoelzer ha un tipo e il tipo è 'int' –
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! –