| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2324 人关注过本帖
标题:您认为这道题目的结果应该是什么?
只看楼主 加入收藏
phrankmoon
Rank: 2
等 级:论坛游民
帖 子:32
专家分:15
注 册:2010-7-15
收藏
得分:0 
以下是引用无悔爱白修在2010-7-27 23:05:01的发言:

#include <stdio.h>

double sqr(x) {                //必须对X做一个定义。不然编译会出错。
    return (x*x);
}

因为用的%g,得到的结果为9

你的是什么编译器,扔了去!与C标准都不兼容!

[ 本帖最后由 phrankmoon 于 2010-7-28 20:10 编辑 ]
2010-07-28 20:01
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 11楼 phrankmoon
如果标准中有这一条, 我建议标准删除这一条

我就是真命天子,顺我者生,逆我者死!
2010-07-28 20:18
phrankmoon
Rank: 2
等 级:论坛游民
帖 子:32
专家分:15
注 册:2010-7-15
收藏
得分:0 
回复 12楼 BlueGuy
但标准没有删除,你可以用VC6或者GCC编译试试看。我没有VC2008,所以不知道它的情况

我推荐你到C标准委员会去工作

[ 本帖最后由 phrankmoon 于 2010-7-28 20:24 编辑 ]
2010-07-28 20:20
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
double sqr(x)
// 我指的是这一个, 您觉得这样的写法有存在的理由?

我就是真命天子,顺我者生,逆我者死!
2010-07-28 20:21
phrankmoon
Rank: 2
等 级:论坛游民
帖 子:32
专家分:15
注 册:2010-7-15
收藏
得分:0 
以下是引用BlueGuy在2010-7-28 20:21:43的发言:

double sqr(x)
// 我指的是这一个, 您觉得这样的写法有存在的理由?

哈哈,当然,没有任何理由这样写。

您看过没看过 Plauger的《The standard C library》?我最近闲的蛋疼,在看这个。

[ 本帖最后由 phrankmoon 于 2010-7-28 20:29 编辑 ]
2010-07-28 20:28
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 15楼 phrankmoon
没有,/ 不清楚这种写法里面还有什么高深的内涵。
我只对 算法 和 图形感兴趣。

[ 本帖最后由 BlueGuy 于 2010-7-28 20:33 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-07-28 20:30
phrankmoon
Rank: 2
等 级:论坛游民
帖 子:32
专家分:15
注 册:2010-7-15
收藏
得分:0 
回复 16楼 BlueGuy
没什么高深的内涵。

我对算法和图形一点都不感兴趣。
2010-07-28 20:35
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 17楼 phrankmoon
咱俩互补一下啊,

我就是真命天子,顺我者生,逆我者死!
2010-07-28 20:37
zisefengye
Rank: 5Rank: 5
等 级:职业侠客
帖 子:167
专家分:386
注 册:2010-6-27
收藏
得分:0 
我在vs2008里根本无法通过编译,不过可以以这样的形式来写
#define sqr(x) x * x
int main(int argc, char **argv)
{
    double ret;
    ret = sqr(3.0);
    printf("%g\n", ret);
    return 0;
}
但输出结果和楼主提供答案不符。输出确为9。所以我认为9是正确,至于你所说的0,可能和编译器有关。但我从没见过可以不定义传入参数的类型,至少我没从书本上找到该条的出处。
2010-07-28 21:46
phrankmoon
Rank: 2
等 级:论坛游民
帖 子:32
专家分:15
注 册:2010-7-15
收藏
得分:0 
回复 19楼 zisefengye
1>
double sqr(x)
{
    return (x*x);
}

2> #define sqr(x) x*x

两者不等价。

BTW: ANSI标准允许函数形参不指定参数类型。所以,您的VS2008也许默认情况下不完全支持ANSI标准。VC6和GCC编译我在1楼的代码就没有问题。虽然不推荐那么写代码。

[ 本帖最后由 phrankmoon 于 2010-7-28 22:02 编辑 ]
2010-07-28 21:58
快速回复:您认为这道题目的结果应该是什么?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017705 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved