C++ Qt-格式';%f';应为类型为';浮动*';,但参数2的类型为';双倍'^

C++ Qt-格式';%f';应为类型为';浮动*';,但参数2的类型为';双倍'^,c++,qt,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\n

我在学校学的,这让我发疯:

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


有什么问题吗?书上是这样说的;我在stackoverflow中读了很多参考资料,但没有任何帮助。我也尝试过
%lf
,但没有成功。

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

因此,它应该是:

scanf("%f", &Tinggi);

scanf
需要指向变量的指针,而不是变量本身。您可以通过使用一元
&
(address of)运算符传递变量的地址来轻松修复它:

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

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

在您的例子中,编译器抱怨它需要
float*
,即指向
float
变量的指针

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

scanf("%f",&Alas);


尝试使用操作员的
&
一元地址…应为
scanf(“%lf”,&Alas)。并检查
scanf
的返回值,查看是否成功。
scanf("%f",&Alas);
scanf("%f",&Tinggi);