CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

[请教]初学者提问。

楼主51dianying()2003-09-01 14:49:53 在 C/C++ / C语言 提问

 
  #define   N   3    
   
  #define   Y(n)((N+1)*n)    
   
  则执行语句:z=2   *(N+Y(5+1));后,z的值为    
   
  答案是   48,我怎么算是54啊? 问题点数:10、回复次数:8Top

1 楼syuui(syuui)回复于 2003-09-01 14:57:09 得分 0

z   =   2*(N+(N+1)*5+1   )   =   2*(   3   +   (3+1)*5+1   )   =   48Top

2 楼51dianying()回复于 2003-09-01 15:01:37 得分 0

为啥不是:  
   
  z=   2   *   (N   +   (N+1)*(5+1))=54呢   Y(5+1)不是等于((N+1)*(5+1))吗?麻烦请解释一下,多谢!Top

3 楼ppby2002(lovewolf)回复于 2003-09-01 15:07:18 得分 0

这正是宏容易出错的地方啊Top

4 楼syuui(syuui)回复于 2003-09-01 15:07:28 得分 10

宏代换嘛。  
  它只是简单地把n换成5+1了。它不会去管应不应该有括号。Top

5 楼syuui(syuui)回复于 2003-09-01 15:09:11 得分 0

n是换成了5+1。  
  Y(n)就是把Y里所有的n换成5+1。Y(n)的括号是宏定义的。不是宏的值。别想错了。呵呵Top

6 楼syuui(syuui)回复于 2003-09-01 15:10:27 得分 0

如果想得54,这样定义宏:  
  #define     Y(n)       ((N+1)*(n))  
  Top

7 楼jyfcsdn()回复于 2003-09-01 15:12:15 得分 0

宏就是替换,所以n的地方替换为5+1,而不是(5   +   1)Top

8 楼51dianying()回复于 2003-09-01 15:21:07 得分 0

啊,原来是这样!谢谢大家!:)Top

相关问题

  • 提问提问...
  • 提问
  • 提问!!
  • 提问!
  • 提问,^_^&
  • 提问 :
  • 提问
  • 提问
  • 提问
  • 提问

关键词

  • 换成
  • 宏
  • define

得分解答快速导航

  • 帖主:51dianying
  • syuui

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo