导航: 老古网老古论坛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