Konstanta karakter dalam C (berlawanan dengan C ++) memiliki tipe int. Jadi panggilan ini
printf("%d",sizeof('A'));
output 4. Itu sizeof( 'A' )sama dengan sizeof( int ).
Dari Standar C (konstanta Karakter 6.4.4.4)
10 Sebuah konstanta karakter integer memiliki tipe ....
Di sisi lain (6.5.3.4 Ukuran dan keselarasan operator)
4 Ketika sizeof diterapkan pada operan yang memiliki tipe char, unsigned char, atau char yang ditandatangani, (atau versi yang berkualitas) hasilnya adalah 1.
Jadi operan sizeofoperator dalam ekspresi ini sizeof( 'A' )memiliki tipe int sedangkan dalam ekspresi ini di sizeof( a )mana a dinyatakan seperti
char a = 'A';
operan memiliki tipe char.
Perhatikan panggilan itu seperti ini
printf("%d",sizeof(6.5));
menggunakan specifier format konversi yang salah. Anda harus menulis
printf("%zu",sizeof(6.5));
Juga dalam panggilan di atas ada digunakan jenis konstan doublesaat dalam panggilan ini
printf("%zu",sizeof(c));
variabel cmemiliki tipe float.
Anda bisa mendapatkan hasil yang sama untuk panggilan ini jika panggilan pertama menggunakan konstanta dari tipe float like
printf("%zu",sizeof(6.5f));
6.5bukan pelampung, ini adalahdouble