登陆
|
注册
|
搜索
|
最近新帖
发帖子
|
共享我的资料
|
精华帖子
|
热门话题
导航:
老古网
→
老古论坛
→
XMOS公共讨论区
→
XMOS开源项目区
→
单片机程序设计
→
嵌入式系统
→
广告区域
→
→给大家出道C语言测试题![kuolongfei]
*第19348篇: 给大家出道C语言测试题!
楼 主:
kuolongfei
2004年2月19日09:44
给大家出道C语言测试题!
#define f(x) x*x
main()
{
int a=6,b=2,c;
c=f(a)/f(b);
printf("%d\n",c);
}
请问以上程序的输出结果?选择结果有两个,一个是9,一个是36。
这道题让我对自己的基础知识产生怀疑,不知道选择9的是不是有同感?
如果哪位朋友明白,能否给小弟讲解一下,为什么结果会是36?
万分感谢!
第
2
楼:
linkaimu
2004年2月19日09:59
结果是这么得来的
c=6*6/2*2=
结果是这么得来的
c=6*6/2*2=36
好好看看C语言书吧,好象在宏定义里有专门讲到这个问题。
第
3
楼:
kuolongfei
2004年2月20日08:15
看书后明白了!谢谢!
第
4
楼:
kuolongfei
2004年2月20日08:07
c=6*6/2*2还是c=(6*6)/(2*2)?
第
5
楼:
sujiechen
2004年2月19日10:58
有道理,没仔细看还真弄错了
第
6
楼:
renqian
2004年2月20日16:00
回复
实际上很简单
因为f(x) =x*x
所以:c=a*a/b*b按自左向右的结合所以就是
c=6*6/2*2=36
第
7
楼:
xfwang
2004年2月20日21:20
语法问题
在C语言中 #define f(x) x*x
计算机在执行时 是把x*x当作字符来看的直接代入式子中去了即:c=6*6/2*2=36而不是先执行f(x)= x*x 再把f(x) 值代入式子即c=(6*6)/(2*2)=9, 这样讲应该明白了吧
第
8
楼:
guest
2004年2月21日21:48
我想是这样的
#define f(x) ((x).(x))
您看对吗?
第
9
楼:
guest
2004年2月22日23:16
定义时没括号,展开时也没括号,除以2再乘以2等于是没了
>>>>>>对该主题发表你的看法
本主题贴数
9
,分页:
[第1页]
[上一篇主题]:
求助*无线测距*
[下一篇主题]:
这里有可以使用的Protel DXP