关于一个简单的C语言程序

qgwlrcf 2005-06-04 10:16:08
这个是谭浩强C语言教材第二版上面的一个例子
我的运行环境是WIN2K,TC2
源程序
main()
{

}
...全文
282 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangtang88 2005-06-05
  • 打赏
  • 举报
回复
我很同意我楼上的观点,需要进行函数申明呀!!!!
结果就会是2了!!!
PMsg 2005-06-05
  • 打赏
  • 举报
回复
晕死 是2啊
X比Y小 Z=Y=2。5
%D 就是2……
cppprogramlover 2005-06-05
  • 打赏
  • 举报
回复
max不需要声明,因为返回值是int
你甚至可以给max3个参数(有个没有用)
伍丁 2005-06-05
  • 打赏
  • 举报
回复
#include<stdio.h>

float max(float x,float y)
{

float z;
z=x>y?x:y;
return z;
}
int main()
{
float x=1.5,y=2.5;
printf("The max number is %d \n",int(max(x,y)));//!!!!!!!!!
getchar();

return 0;
}

结果是2.

如果为printf("The max number is %d \n",max(x,y));
结果却是为1。

建议作者在输出时强制类型转换。
kyokyxxj 2005-06-05
  • 打赏
  • 举报
回复
#include<stdio.h>
#define max(x,y) x>y?x:y

void main(void)
{
float x=1.5,y=2.5;
printf("The max number is %d",max(x,y));
}

可以去试下这个。
RexKang 2005-06-05
  • 打赏
  • 举报
回复
按楼主所说的代码,跟踪的结果我很郁闷啊
main()
{
float x=1.5,y=2.5;
printf("The max number is %d",max(x,y));
}
max(float x,float y)
{
float z;//到这一步,上面的x是0.000000,y是1.93750
z=x>y?x:y;
return z;
}
怎么变成了1.93750了,那位高手讲解一下??
tian_su 2005-06-05
  • 打赏
  • 举报
回复
前面要有个max函数调用前的声明

老谭有错

但可以改
只要改成
printf("The max number is %d",int(max(x,y)));
就可以了,将max(x,y)强制转换成int

输出为2
dengqianyi2008 2005-06-05
  • 打赏
  • 举报
回复

你看看你的输出!
是~~~printf("The max number is %d",max(x,y));~~~~~~
%d 当然是2了
diabloboy 2005-06-05
  • 打赏
  • 举报
回复
是2,是2
wujie1031 2005-06-05
  • 打赏
  • 举报
回复
#include<stdio.h>
float max(float x,float y)
{

float z;
z=x>y?x:y;
return z;
}

void main()
{
float x=1.5,y=2.5;
printf("The max number is %d",max(x,y));
}

这个结果是0,MAX定义为INT变2
  • 打赏
  • 举报
回复
我晕啊 !人家老谭没有错 兄弟,是你的max函数在调用前没有声明!!!
在主函数第一行加上函数声明就可以了。
mostideal 2005-06-04
  • 打赏
  • 举报
回复
应该和数的类型的存储有关吧,在转换时的取舍问题了。。
bambooeric 2005-06-04
  • 打赏
  • 举报
回复
楼主该申明函数max的返回类型
csjcrystal 2005-06-04
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
void main()
{
int max(float,float);
float x=1.5,y=2.5;
printf("The max number is %d",max(x,y));
}
int max(float x,float y)
{
float z;
z=x>y?x:y;
return z;
}
结果是2啊,不会错的
「已注销」 2005-06-04
  • 打赏
  • 举报
回复
#include <stdio.h>

int main()
{
float i=10;
printf("The max number is %d",i);
printf("\n");
return 0;
}

这个很奇怪。。为什么是0呀。。。。。。
「已注销」 2005-06-04
  • 打赏
  • 举报
回复
#include <stdio.h>

max(float x,float y)
{
float z;
z=x>y?x:y;
return z;
}

int main()
{
float x=1.5,y=2.5;
printf("The max number is %d",max(x,y));
printf("\n");
return 0;
}
结果的确是2
ruyili9803 2005-06-04
  • 打赏
  • 举报
回复
这是函数类型的问题,你没有声明max函数就开始使用,传递参数的时候出了问题。只要声明这个函数就行了,或者把它放到main前面
xtjqu 2005-06-04
  • 打赏
  • 举报
回复
就该是2,要么老谭错了,要么你说错了
JOHE2003 2005-06-04
  • 打赏
  • 举报
回复
能不能把事说清楚点儿,好吗??
原程序是什么呀???
megaboy 2005-06-04
  • 打赏
  • 举报
回复
结果的确是2啊,应该是你自己搞错了些东西了。
加载更多回复(3)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧