2015-09-07 76 views
1

我得到這個在學校和它的駕駛我瘋狂:Qt的 - 格式「%F」需要類型「浮動*」的說法,但參數2的類型是「雙師型」^

float Alas,Tinggi,Luas; 
printf("Masukan Nilai Alas Segitiga:"); 
scanf("%f",Alas); 
printf("\nMasukan Nilai Tinggi Segitiga"); 
scanf("%f",Tinggi); 
Luas=0.5*Alas*Tinggi; 
printf("\nNilai Luas Segitiga adalah : %f",Luas); 

使剛剛恢復

D:\BUKU\ngitung2\main.cpp:9: warning: format '%f' expects argument of type 'float*', but argument 2 has type 'double' [-Wformat=] 
scanf("%f",Alas); 
       ^

D:\BUKU\ngitung2\main.cpp:11: warning: format '%f' expects argument of type 'float*', but argument 2 has type 'double' [-Wformat=] 
scanf("%f",Tinggi); 
       ^

這有什麼錯?這本書說這是這樣的;我在stackoverflow中讀了很多引用,但沒有任何幫助。我已經嘗試過%lf,但它不起作用。

+0

嘗試使用'&'一元運算符「地址」。 .. – owacoder

+0

應該是'scanf(「%lf」,&Alas);'。並檢查'scanf'的返回值以查看它是否成功。 –

回答

1

scanf期望一個指針你的變量,而不是變量本身。您可以輕鬆地通過使用一元&(地址)運營商通過你的變量的地址解決它:

float Alas,Tinggi,Luas; 
printf("Masukan Nilai Alas Segitiga:"); 
scanf("%f",&Alas); 
printf("\nMasukan Nilai Tinggi Segitiga"); 
scanf("%f",&Tinggi); 
Luas=0.5*Alas*Tinggi; 
printf("\nNilai Luas Segitiga adalah : %f",Luas); 
0

作爲評論中提到的@owacoder,scanf需要float的地址才能正常工作。

所以它應該是:

scanf("%f", &Tinggi); 
0

你要通過你要修改的scanf的地址(或指針)變量函數調用。

就你而言,編譯器抱怨說它期望float*,即指向float變量的指針。

指針傳遞給他們的scanf函數調用,替換爲以下行:

scanf("%f",&Alas); 

scanf("%f",&Tinggi); 
相關問題