c:55:6:错误:参数'b'与原型不匹配 c:3:6:错误:原型声明
我尝试过使用我通过这些功能的价值观,但它似乎并没有起作用。我对数组很新,所以我可能会遗漏一些明显的东西。任何帮助将不胜感激!
#include <stdio.h>
void value_calc(int, float);
int main(){
int barcode[100], quantity[100], i;
double price[100], value[100], value1;
printf("Grocery Store Inventory\n");
printf("=======================\n");
for(i=0;i<100;i++){
printf("Barcode : ");
scanf("%d", &barcode[i]);
if (barcode[i]==0){
break;
}
printf("Price : ");
scanf("%lf", &price[i]);
printf("Quantity : ");
scanf("%d", &quantity[i]);
value_calc(quantity[i],price[i]);
}
printf("\n Goods in Stock\n");
printf(" ==============\n\n");
printf("Barcode Price Quantity Value\n");
printf("-------------------------------------\n");
for(i=0;i<100 && barcode[i] !=0;i++){
printf("%d %.2lf %8d %.2lf\n", barcode[i], price[i], quantity[i]);
}
return 0;
}
void value_calc(a,b){
double value1;
value1 = a*b;
}
答案 0 :(得分:3)
问题是你的value_calc
定义省略了参数类型:
void value_calc(int, float);
void value_calc(a,b) {
..
}
C允许您省略参数类型,但默认情况下它们变为int
(在GCC和Clang上使用-Wimplicit-int
启用警告)。现在,您有一个int, float
的声明和int, int
的定义,它与之不匹配。试试:
void value_calc(int a, float b) {
..
}
答案 1 :(得分:2)
声明
void value_calc(int, float);
与函数本身不匹配:
void value_calc(a,b)
...
因为默认情况下所有函数参数都是int
。在函数中使用与声明本身相同的声明:
void value_calc (int a, float b)
...
注意:我也在这一行收到警告,您应该查看它:
<stdin>:46:50: warning: more '%' conversions than data arguments [-Wformat]
printf("%d %.2lf %8d %.2lf\n", barcode[i], price[i], quantity[i]);