刚学C编程,大家看看这个程序哪里错了

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:28:36
main()
{
long a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("max=%d\n",c);
}
long max(long x,long y)
{
long z;
if(x>y)z=x;
else z=y;
return (z);
}

这是书上的例子,只不过我把所有的int都改成了long,因为我想如果输入一个比32767大的数的话,int就不够用了。但是运行时,光标停在倒数第二个“{”上,并且显示type mismatch in redeclaration of 'max'

对了,我用的是turboC/C++ for windows 集成实验与学习环境免费版

是这样的,在c里调用函数要先声名再调用的。改成
main()
{
long a,b,c;
long max(); //加上这条
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("max=%d\n",c);
}
long max(long x,long y)
{
long z;
if(x>y)z=x;
else z=y;
return (z);
}

或者把函数放在main()之前不先声明也可以!

不是返回值为int的函数需要进行函数声明,让编译器知道你的函数
当然自定义函数在主函数前一般也可以不用声明
另外long的格式控制符是%ld,不是%d
main()
{
long max(long x,long y);
long a,b,c;
scanf("%ld,%ld",&a,&b);
c=max(a,b);
printf("max=%ld\n",c);getch();
}
long max(long x,long y)
{
long z;
if(x>y)z=x;
else z=y;
return (z);
}

类型没有对应.
既然定义long,那么输入语句中应该写成scanf("%ld,%ld",&a,&b);而不是%d.