| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 458 人关注过本帖
标题:求解释,这是为什么?(C语言笔试题)
只看楼主 加入收藏
血雨萧瑟
Rank: 5Rank: 5
来 自:福州大学
等 级:职业侠客
帖 子:155
专家分:320
注 册:2012-11-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
求解释,这是为什么?(C语言笔试题)
#include <stdio.h>
#define ADD(x) x+x
int main()
{
    int a=3,b=4,c=10,d;
    d=ADD(a+b)*c;
    printf("d=%d\n",d);
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 试题 include return C语言 
2013-01-08 23:07
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:10 
d=a+b+a+b*c
这是宏展开,,其他的你自己想吧

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-08 23:09
血雨萧瑟
Rank: 5Rank: 5
来 自:福州大学
等 级:职业侠客
帖 子:155
专家分:320
注 册:2012-11-19
收藏
得分:0 
刚看了一下书明白了,老谭的第四版没有讲宏这个东东,老师也没说,原来这里头还有这么多道道。

新手初学,可以拍砖。
游戏不是猛虎,网络在怎么发展网游都不可能消失只会越来越像一个世界。
2013-01-08 23:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
以下是引用血雨萧瑟在2013-1-8 23:15:00的发言:

刚看了一下书明白了,老谭的第四版没有讲宏这个东东,老师也没说,原来这里头还有这么多道道。

没讲你为什么要用?人家为什么不讲,你没问过老师?

授人以渔,不授人以鱼。
2013-01-08 23:15
血雨萧瑟
Rank: 5Rank: 5
来 自:福州大学
等 级:职业侠客
帖 子:155
专家分:320
注 册:2012-11-19
收藏
得分:0 
都没接触到,要不是在网上找题还真不知道带参数的宏是什么

新手初学,可以拍砖。
游戏不是猛虎,网络在怎么发展网游都不可能消失只会越来越像一个世界。
2013-01-08 23:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用血雨萧瑟在2013-1-8 23:18:20的发言:

都没接触到,要不是在网上找题还真不知道带参数的宏是什么

不建议再使用的东西就不收在新版中,老师也不提,跑到网上专看几十年前的知识和编程习惯,你老师知道恐怕要吐血。

授人以渔,不授人以鱼。
2013-01-08 23:20
血雨萧瑟
Rank: 5Rank: 5
来 自:福州大学
等 级:职业侠客
帖 子:155
专家分:320
注 册:2012-11-19
收藏
得分:0 
以下是引用TonyDeng在2013-1-8 23:20:27的发言:


不建议再使用的东西就不收在新版中,老师也不提,跑到网上专看几十年前的知识和编程习惯,你老师知道恐怕要吐血。

好吧,谢谢指导,原来如此。

新手初学,可以拍砖。
游戏不是猛虎,网络在怎么发展网游都不可能消失只会越来越像一个世界。
2013-01-08 23:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那个宏,要预防这种展开错误,一般用括号括住后面的参数x,即(x)*(x),用括号来强制先求x的值。但这种宏函数只是假象,不是真正的函数,它缺乏类型检查机制,等于间接取消了C的强类型语言优势,当传入参数类型不符的时候,编译器是无法替你事先检查出来的,只能留到运行时抛出那个难看的对话框终止程序,更难收拾。在当今的编译器中,像这种小型函数都可以运用诸如inline那样的嵌入式函数来提高速度,同时又保留类型检查机制,早已不鼓励再写这种代码,那是三十年前流行的写法,在网上流传,很多把这些东西当秘笈一样修炼,害人害己。老谭的书不再收,老师也不提,自然有原因。

[ 本帖最后由 TonyDeng 于 2013-1-9 00:28 编辑 ]

授人以渔,不授人以鱼。
2013-01-08 23:32
血雨萧瑟
Rank: 5Rank: 5
来 自:福州大学
等 级:职业侠客
帖 子:155
专家分:320
注 册:2012-11-19
收藏
得分:0 
哦哦,原来如此,我们宿舍还为此讨论了大半天。郁闷

新手初学,可以拍砖。
游戏不是猛虎,网络在怎么发展网游都不可能消失只会越来越像一个世界。
2013-01-08 23:36
Susurrant
Rank: 2
来 自:武汉
等 级:论坛游民
帖 子:22
专家分:52
注 册:2013-1-7
收藏
得分:0 
以下是引用TonyDeng在2013-1-8 23:32:13的发言:

那个宏,要预防这种展开错误,一般用括号括住后面的参数x,即(x)*(x),用括号来强制先求x的值。但这种宏函数只是假象,不是真正的函数,它缺乏类型检查机制,等于间接取消了C的强类型语言优势,当传入参数类型不符的时候,编译器是无法替你事先检查出来的,只能留到运行时抛出那个难看的对话框终止程序,更难收拾。在当今的编译器中,像这种小型函数都可以运用诸如online那样的嵌入式函数来提高速度,同时又保留类型检查机制,早已不鼓励再写这种代码,那是三十年前流行的写法,在网上流传,很多把这些东西当秘笈一样修炼,害人害己。老谭的书不再收,老师也不提,自然有原因。

受教了!

effort ? succeed : retry ;
2013-01-09 00:26
快速回复:求解释,这是为什么?(C语言笔试题)
数据加载中...
 
   



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

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