不确定是否应该调用强制转换或对参数执行某些操作 #包括 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

不确定是否应该调用强制转换或对参数执行某些操作 #包括 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 <

当我试图编译时,我得到了这个错误,是因为我没有正确地转换吗

exampleone.c:13:6:警告:“DetermineMax”的类型冲突[默认启用]

void determinimax(双dScoreM[],int iscorecocount,双*pdMin, ^ c:9:1:注意:这里有以前的“determineMax”隐式声明
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)
{
 ....
}