不确定是否应该调用强制转换或对参数执行某些操作 #包括 int main() { 双德明; 双D最大值; char szName[]=“Armvad Ezikon”; 双dScoreM[]={40,0,30,55,0,25}; int iScoreCount=6; determinimax(dScoreM、iscorecocount、dminium和dMaximum); printf(“对于%s,最小=%lf和最大=%lf”,szName,dminium,dMaximum); 返回0; } void determinimax(双dScoreM[],int iscorecocount,双*pdMin,双*pdMax) { int i; *pdMin=200.0;//任意高值 *pdMax=0.0; 对于(i=0;i
当我试图编译时,我得到了这个错误,是因为我没有正确地转换吗 exampleone.c:13:6:警告:“DetermineMax”的类型冲突[默认启用] void determinimax(双dScoreM[],int iscorecocount,双*pdMin, ^ c:9:1:注意:这里有以前的“determineMax”隐式声明不确定是否应该调用强制转换或对参数执行某些操作 #包括 int main() { 双德明; 双D最大值; char szName[]=“Armvad Ezikon”; 双dScoreM[]={40,0,30,55,0,25}; int iScoreCount=6; determinimax(dScoreM、iscorecocount、dminium和dMaximum); printf(“对于%s,最小=%lf和最大=%lf”,szName,dminium,dMaximum); 返回0; } void determinimax(双dScoreM[],int iscorecocount,双*pdMin,双*pdMax) { int i; *pdMin=200.0;//任意高值 *pdMax=0.0; 对于(i=0;i,c,pointers,parameters,void,C,Pointers,Parameters,Void,当我试图编译时,我得到了这个错误,是因为我没有正确地转换吗 exampleone.c:13:6:警告:“DetermineMax”的类型冲突[默认启用] void determinimax(双dScoreM[],int iscorecocount,双*pdMin, ^ c:9:1:注意:这里有以前的“determineMax”隐式声明 determinimax(dScoreM、iScoreCount、dminium和dMaximum);在使用声明之前,您必须先放置声明: #include <
determinimax(dScoreM、iScoreCount、dminium和dMaximum);在使用声明之前,您必须先放置声明:
#include <stdio.h>
int main()
{
double dMinimum;
double dMaximum;
char szName[] = "Armvad Ezikon";
double dScoreM[] = { 40, 0, 30, 55, 0, 25 };
int iScoreCount = 6;
determineMinMax(dScoreM, iScoreCount , &dMinimum, &dMaximum);
printf("For %s, minimum = %lf and maximum = %lf ", szName, dMinimum, dMaximum);
return 0;
}
void determineMinMax( double dScoreM[] , int iScoreCount , double *pdMin, double *pdMax)
{
int i;
*pdMin = 200.0; // arbitrary high value
*pdMax = 0.0;
for(i = 0; i < iScoreCount; i++)
{
if(dScoreM[i] < *pdMin)
*pdMin = dScoreM[i];
if(dScoreM[i] > *pdMax)
*pdMax = dScoreM[i];
}
}
或者简单地说
void determineMinMax( double dScoreM[] , int iScoreCount , double *pdMin, double *pdMax);
int main(void){
..
}
否则,它与编译器假定的隐式声明冲突,即int determinemax()
。但在C99、C11中,这是一个错误。\include
void determineMinMax( double dScoreM[] , int iScoreCount , double *pdMin, double *pdMax){
...
}
int main(void){
...
}
#包括
void determinimax(双dScoreM[],int,double*,double*);
int main(int argc,const char*argv[]
{
双D最小值,D最大值;
char szName[]=“Armvad Ezikon”;
双dScoreM[]={40,0,30,55,0,25};
int iScoreCount=6;
determinimax(dScoreM、iscorecocount、dminium和dMaximum);
printf(“对于%s,最小=%lf和最大=%lf”,szName,dminium,dMaximum);
返回0;
}
void determinimax(双dScoreM[],int iscorecocount,双*pdMin,双*pdMax)
{
int i;
//使用数组的第一个元素初始化*pdMin和*pdMax,这只是一个假设。
*pdMin=40;
*pdMax=40;
//您也可以使用以下方法进行初始化。
//*pdMin=(INT_MAX);
//*pdMax=-(INT_MAX);
对于(i=0;i*pdMax)
*pdMax=dScoreM[i];
}
}
上面的代码将解决您的问题,根据C99和C11,您需要首先声明函数的签名/原型,然后定义该函数,或者需要在从main()
函数调用函数之前定义该函数
在本例中,签名告诉编译器,我已经声明了函数名
determinimax
,它将接受四个参数作为输入,并将void
返回到调用它的函数,在本例中是main()
之所以会收到警告,是因为您没有向前声明函数determinemax
,而是在main
中调用了它。编译器假定它的返回类型为int,并且它接受任意数量的参数,这使得它的原型看起来像:int determinemax();
这就是为什么编译器会警告您类型冲突,因为编译器假定的函数签名与函数签名不同
要解决此问题,只需在main
之前包含函数原型:
#include <stdio.h>
#include <limits.h>
void determineMinMax (double dScoreM[], int, double*, double*);
int main(int argc, const char*argv[])
{
double dMinimum,dMaximum;
char szName[] = "Armvad Ezikon";
double dScoreM[] = { 40, 0, 30, 55, 0, 25 };
int iScoreCount = 6;
determineMinMax(dScoreM, iScoreCount , &dMinimum, &dMaximum);
printf("For %s, minimum = %lf and maximum = %lf ", szName, dMinimum, dMaximum);
return 0;
}
void determineMinMax ( double dScoreM[] , int iScoreCount , double *pdMin, double *pdMax)
{
int i;
//initialize *pdMin and *pdMax with the first element of the array, just an assumption.
*pdMin = 40;
*pdMax = 40;
//You can use the following way also for initialization.
//*pdMin = (INT_MAX);
//*pdMax = -(INT_MAX);
for(i = 0; i < iScoreCount; i++)
{
if(dScoreM[i] < *pdMin)
*pdMin = dScoreM[i];
if(dScoreM[i] > *pdMax)
*pdMax = dScoreM[i];
}
}
在main之前需要一个函数原型。除此之外,您可以从第一个元素
dScoreM[0]
初始化*pdMin
和*pdMax
,以避免猜测,然后从1
迭代i
。
void determineMinMax(double dScoreM[], int iScoreCount, double *pdMin, double *pdMax);
int main(void) {
...
}
void determineMinMax(double dScoreM[], int iScoreCount, double *pdMin, double *pdMax)
{
....
}