Dalam program yang diberikan mengapa saya mendapatkan hasil yang berbeda untuk masing-masing printf?
#include <stdio.h>
int main()
{
float c = 4.4e10;
printf("%f\n", c);
printf("%f\n", 4.4e10);
return 0;
}
Dan itu menunjukkan output berikut:
44000002048.000000
44000000000.000000
doubleke floatterjadi dalam bahasa C? Atau Anda ingin tahu nilai apa yang dihasilkan dari konversi, yaitu, apa pengaruh konversi itu? Atau sesuatu yang lain?
Ckita digunakan printf("%f",x)untuk floatdan printf("%lf",x)untuk double. Kapan semuanya berubah? Dan bagaimana orang akan secara eksplisit mencetak (tunggal) float- printf("%hf",x)??
%lfdi printf adalah hal yang sama dengan %f. A floatdalam argumen variabel dikonversikan menjadi doubleoleh kompiler, sama seperti yang shortdikonversi menjadi int.
4.4e10adalahdoublekonstanta yang dikonversi kefloatdalam inisialisasictetapi disimpan sebagaidoubleketika diteruskanprintf. Namun, Anda mungkin juga ingin tahu bahwa menambahkanfakhiran membuatnya menjadifloatkonstan: Percetakan4.4e10fakan menunjukkan nilai yang sama bahwa hasil dari inisialisasicke4.4e10f.floatKonstanta yang membedakan daridoublekonstanta bisa penting untuk melakukan pekerjaan yang berkualitas dengan aritmatika titik-mengambang.