首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于C函数调用
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 15:31:16 楼主
    main()
    {
    float a,b;
    int c;
    scanf("%f,%f",&a,&b);
    c=max(a,b);
    printf("max is %d\n",c);
    system("pause");
    }

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

    输入1.2,2.5  结果为:2
    输入1.1,2.5  结果为:1
    输入1.5,2.5  结果为1
    为什么会这样?我知道类型不一样
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • akirya
    • 等级:
    发表于:2008-05-12 15:33:591楼 得分:0
    你输出c的二进制,看看是怎么回事吧.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fetag
    • 等级:
    发表于:2008-05-12 15:35:092楼 得分:0
    你去把你老师砍死吧,他教你这么写代码,这不是坑你呢吗...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 15:35:313楼 得分:0
    转换,结果是被剪裁过的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 15:39:364楼 得分:0
    C/C++ code
    #include<stdio.h> int main() { float max(float x,float y); float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); printf("max is %d\n",c); printf("max is %d\n",max(a,b); ); system("pause"); return 0; } float max(float x,float y) { float z; z=x>y? x:y; return z; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 15:41:015楼 得分:0
    MAX的返回类型被处理为int了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 15:46:026楼 得分:0
    引用 2 楼 fetag 的回复:
    你去把你老师砍死吧,他教你这么写代码,这不是坑你呢吗...

    相当的认同,学习C语言选对书和人很是关键
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 15:55:367楼 得分:0
    int c;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 16:02:048楼 得分:0
    引用楼主 Jenew 的帖子:
    main()
    {
    float a,b;
    int c;
    scanf("%f,%f",&a,&b);
    c=max(a,b);
    printf("max is %d\n",c);
    system("pause");
    }

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

    输入1.2,2.5  结果为:2
    输入1.1,2.5  结果为:1
    输入1.5,2.5  结果为1
    为什么会这样?我知道类型不一样

    c定义为float型,输出格式改为%f就ok了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 16:03:099楼 得分:0
    C/C++ code
    main() { float a,b; float c; scanf("%f,%f",&a,&b); c=max(a,b); printf("max is %f\n",c); system("pause"); } float max(float x,float y) { float z; z=x>y? x:y; return z; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 16:09:3010楼 得分:0
    ps:定义的那个函数写到main前面,不然就声明一下。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 16:16:4311楼 得分:0
    #include <stdio.h>
    #include <stdlib.h>
    float max(float x,float y);
    int main()
    {
    float a,b;
    float c;
    scanf("%f,%f",&a,&b);
    c=max(a,b);
    printf("max is %f\n",c);
    return 0;
    }

    float  max(float x,float y){
    float z;
    z=x>y? x:y;
    return z;
    }
    首先函数声明没有,还有c的类型不能是int!
    加油!努力!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 16:17:1912楼 得分:0
    楼主的“为什么会这样?我知道类型不一样”答案是:float类型占的空间比int大,而将一个float赋给int时,系统取的是其整数部分,明白??
    C/C++ code
    float max(float x,float y) { float z; z=x>y? x:y; return z; } int main() { float a,b; float c; scanf("%f,%f",&a,&b); c=max(a,b); printf("max is %f\n",c); }


    以上代码我在unix里编译运行过了,
    输入1.2,2.5 
    输入1.1,2.5 
    输入1.5,2.5  结果均为2.500000
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 16:21:4113楼 得分:0
    把max改下名字放到main前面,其它都没改,输出都是2
    lz会不会输入的时候忘了逗号?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 16:22:1014楼 得分:0
    另,支持
    引用 2 楼 fetag 的回复:
    你去把你老师砍死吧,他教你这么写代码,这不是坑你呢吗...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 16:36:2315楼 得分:0
    #include <iostream>
    using namespace std;
    max(float x,float y)
    {
    float z;
    z=x>y? x:y;
    return z;
    }
    main()
    {
    float a,b;
    int c;
    cin >>a >>b;
    c=max(a,b);
    cout < <c < <endl;
    system("pause");
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 16:58:1116楼 得分:0
    引用 8 楼 jillnicky 的回复:
    引用楼主 Jenew 的帖子:
    main() 

    float a,b; 
    int c; 
    scanf("%f,%f",&a,&b); 
    c=max(a,b); 
    printf("max is %d\n",c); 
    system("pause"); 


    max(float x,float y) 

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


    输入1.2,2.5  结果为:2 
    输入1.1,2.5  结果为:1 
    输入1.5,2.5  结果为1 
    为什么会这样?我知道类型不一样 

    c定义为float型,输出格式改为%f就ok了。


    不行。。试过了。。输入是:1.000000
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 17:02:4217楼 得分:0
    引用 4 楼 HelloDan 的回复:
    C/C++ code
    #include <stdio.h>

    int main()
    {

    float max(float x,float y);
    float a,b;
    int c;
    scanf("%f,%f",&a,&b);
    c=max(a,b);
    printf("max is %d\n",c);

    printf("max is %d\n",max(a,b); );

    system("pause");
    return 0;
    }

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


    你看一下结果。。这又是一个新问题。。为什么??
    1.1,2.5
    max is 2
    max is 0
    请按任意键继续. . .
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 17:04:5518楼 得分:0
    引用 1 楼 akirya 的回复:
    你输出c的二进制,看看是怎么回事吧.


    能说明白一点吗??
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 17:07:2719楼 得分:0
    引用 6 楼 yao_zhuang 的回复:
    引用 2 楼 fetag 的回复:
    你去把你老师砍死吧,他教你这么写代码,这不是坑你呢吗...

    相当的认同,学习C语言选对书和人很是关键
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 17:16:2020楼 得分:0
    妈的。。学的很火了。。晕倒了。。
    有太多的为什么。。。。唉。。累啊。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 17:39:3721楼 得分:0
    ....

    细心点就好了

    出错了就好好检查以下。
    嘿嘿

    返回类型
    max(float x,float y)

    输出控制
    printf("max is %d\n",c);

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 17:43:2622楼 得分:0
    细心问题。
    float max(float x,float y)
    {
    float z;
    z=x>y? x:y;
    return z;
    }

    void main()
    {
    float a,b;
    int c;
    scanf("%f%f",&a,&b);
    c=max(a,b);
    printf("max is %d\n",c);
    }

    这段代码可以完美运行,
    scanf函数第一个参数%f之间多了个逗号。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 18:36:1523楼 得分:0
    C/C++ code
    #include<stdio.h> float max(float x,float y) { float z; z=x>y? x:y; return z; } int main() { float a,b; float c; scanf("%f,%f",&a,&b); c=max(a,b); printf("max is %f\n",c); getchar(); }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 20:28:5424楼 得分:0
    建议LZ买本 <C Primer Plus> 看看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 20:50:4525楼 得分:0
    引用 20 楼 Jenew 的回复:
    妈的。。学的很火了。。晕倒了。。
    有太多的为什么。。。。唉。。累啊。

    楼主别急,学习要慢慢来啊。CSDN上有这么多的朋友会帮你的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 20:54:3126楼 得分:0
    贴出你包含的头文件 ,我看你的max函数应该不会被调用啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 20:57:3127楼 得分:0
    23楼正解

    函数的默认返回值类型是int类型.
    不同类型之间的赋值,可能会出现部分数据丢失。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shu_yoyo
    • 等级:
    发表于:2008-05-12 21:25:0928楼 得分:0
    写出这样的代码,哪个公司敢要你啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 22:25:2429楼 得分:0
    printf("max is %d\n",c); 

    printf("max is %d\n",max(a,b); ); 

    老兄, %d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d!!!!!!!!!!!!!!!!!!!!!!!!!

    你的返回值是F型,你要他输出d,那肯定行不通拉。

    作程序员,一定要细心那。要不然,到时候你在几万行的代码里找一个低级错误,那可是很要命的,这种问题比算法不行还严重!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ysuzhao
    • 等级:
    发表于:2008-05-13 10:16:3930楼 得分:0
    #include <iostream>
    using namespace std;
    void main()
    {
    float a,b;
    int c;
    cin>>a>>b;
    c=max(a,b);
    cout < <"max is %d\n" < <c;
    system("pause");
    }

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

    max return value 应该是float  但显示声名为 int 也不会出现楼主的问题
    结果是
    输入1.2,2.5  结果为:2
    输入1.1,2.5  结果为:2
    输入1.5,2.5  结果为2

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-13 11:11:3631楼 得分:0
    引用 2 楼 fetag 的回复:
    你去把你老师砍死吧,他教你这么写代码,这不是坑你呢吗...


    我想這不關老師的事,是樓主自己沒學好。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-13 12:47:4532楼 得分:0
    没有声明函数
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-13 15:28:1333楼 得分:0
    该回复于2008-05-13 18:01:34被管理员删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天