莫名奇妙的参数传递?
下面的程序输入1.5,2.5
跟踪发现传递到参数中的值为x=0,y = 1.9375
为什么?《谭浩强 C程序设计(第二版)》P148-149
奇怪之一:max应该在编译时确认为库函数或者宏,但链接时显然成了自定义函数;
奇怪之二:将第一行改为max(float, float);运行结果为2。而不改时为1
奇怪之三:为什么会有跟踪的实参是0,1.9375(windows98, tc2.0)
/*float max(float, float);*/
main()
{
float a,b;
int c;
scanf("%f,%f", &a, &b);
c = max(a, b);
printf("%d\n", c);
}
max(float x, float y)
{
float z;
z = x > y ? x : y;
return(z);
}