RSS
热门关键字:  数据挖掘  数据仓库  商业智能  人工智能  搜索引擎
当前位置 :| 首页>编程技术>编程杂谈>

C语言题 求解

来源: 作者:unkonwn 时间:2007-01-17 点击:

C语言题 求解

已知宏定义
#define N 3
#define Y(n) ((N+1)*n)
执行该语句z=2*(N+Y(5+1)后 z 的值是____?

还有

已知宏定义#define SQ(x)x*x执行语句printf("%d",10/SQ(3))后的输出结果是什么?

急求详细执行过程,谢谢!

使用宏定义的时候,是在编译时完成文本的替换,并不是进行运算
如编译的时候,编译器将SQ(3) 替换成3*3
所以你print的语句就变成printf("%d",10/3*3)
由运算优先级从左到右10/3得3,再用3*3得9
所有printf的内容为9
要记住的是宏定义只是在编译时进行的文本替换操作,而不会像函数那样的
这就是为什么说宏定义存在着缺陷了,它很容易产生与你预期不同的结果,在c++中宏也就被废了

谢谢您!

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
匿名?