Qt - 格式'%f'期望类型' float *'的参数,但参数2的类型为' double' ^

时间:2015-09-07 02:13:32

标签: c++ qt

我在学校得到了这个,这让我发疯了:

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,但它没有用。

3 个答案:

答案 0 :(得分:2)

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);

答案 1 :(得分:0)

正如@owacoder在评论中提到的那样,scanf需要float的地址才能正常工作。

所以它应该是:

scanf("%f", &Tinggi);

答案 2 :(得分:0)

您必须将要修改的变量的地址(或指针)传递给scanf函数调用。

在您的情况下,编译器抱怨它期望float*,即指向float变量的指针。

要将指向它们的指针传递给scanf函数调用,请用以下内容替换这些行:

scanf("%f",&Alas);

scanf("%f",&Tinggi);