C语言里 #DEFINE的运算法则是啥啊 急几急啊以题 为例吧

#defineXa+bmain(){inta=3,b=4,s1;s1=2*X;printf("%d\n",s1);}那这个那???#defineM5#defineNM+1... #define X a+b
main( )
{ int a=3,b=4,s1;
s1=2*X;
printf("%d\n",s1);
}
那这个那???
#define M 5
#define N M+1
#define NN N*N-M
void main( )
{ printf("%d\n",3*NN);
}
展开
 我来答
lzn_world
推荐于2016-04-20 · TA获得超过701个赞
知道小有建树答主
回答量:375
采纳率:0%
帮助的人:349万
展开全部
有一点啊,你的那个s1初始化时要给它值,因为这是C,所以,不能默认为0。言归正传,#DEFINE就是把X的地方直接原封不动的换为X后面的那些东西,也就是这里的a+b,换完后,main 中就为:main(){
int a=3,b=4,s1=0;
s1=2*a+b;
printf("%d\n",s1);
}
那么运算结果就是,2*3+4=6+4=10。
追问
那这个那???
#define M 5
#define N M+1
#define NN N*N-M
void main( )
{ printf("%d\n",3*NN);
}
追答
3*5+1*5+1-5=15+5-4=16不知道对不对啊。当你拿不准一个算法的结果时,你可以编译一下,让它运行出结果,看看对不对,若和之前设想的结果不一样的话,就反推一下,看是哪里想错了,实际这也挺有意思的。
回来吧浪迹天涯的游子
2011-06-07 · TA获得超过1495个赞
知道小有建树答主
回答量:357
采纳率:100%
帮助的人:106万
展开全部
这个其实和用#define定义一个常量一样,意思是在遇到X时执行 a+b,类似于一个函数,但是它是定义的一个宏,意思是在整个程序中遇到X都将对变量a和变量b做加法运算,这里的X就相当于一个替代标志,没有类型(跟函数相比较而言,函数要么是空类型,要么是整型或者浮点数型等等)划分,就完全是等同于 a+b 这个式子。和这个定义一起看更容易理解:#define N 100,那么程序编译链接时遇到N就用100替代处理,你明白了么?
举个例子:
#define aaaa printf("\n")
void main()
{
int x,y,z;
x=1;
y=2;
z=x+y;
printf("%d",z);
aaaa;
}
上面程序等同效如下形式:
void main()
{
int x,y,z;
x=1;
y=2;
z=x+y;
printf("%d",z);
printf("\n");
}
在实际使用C语言编程的时候,可以将一些比较常用的操作或运算或简单函数甚至各种语句(当然系统保留的一些不能重定义啦)利用#define 来定义,也就是用#define 命令后面紧跟的标志符(如你的问题中的X和我的演示中的aaaa)来替代那些复杂的语句或者常量,这样一来可以比较节省编程和调试时间。在编译链接时(如果要生成可执行文件,在片上系统编程上不同,不过也大同小异),直接把定义的标志在程序代码中转换成所表示的部分,这个标志它本身实际就没有在程序运行中起作用,只是在编写代码的时候使得工作量减少了而已。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
avatian1
2011-06-07 · TA获得超过1万个赞
知道大有可为答主
回答量:6315
采纳率:0%
帮助的人:2652万
展开全部
你这个题应该是:#define X (a+b)
#define 是定义宏,宏可以带参数或不带参数。
1、不带参数的宏
比如:
#define N 6
#define X (a+b)
2、带参数的宏
#define X(a,b) a+b
注意:宏替换是在程序编译前完成,在宏替换时注意必须是“原样替换”,不能自己先计算。计算只是在编译过程中才做的事。
比如:
#define X(a,b) a+b
如果a=3; b=5; 则表达式 z=5*X(a,b)执行后,z的值为??
替换过程:z=5*a+b (原样替换进去)
计算过程(编译过程):z=5*3+5 结果为:20
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tidecao2006
2011-06-07 · TA获得超过1228个赞
知道小有建树答主
回答量:842
采纳率:0%
帮助的人:788万
展开全部
#define是一种预处理,分带参数和不带参数,#define X a+b是不带参数的,当下面程序中遇到X则替换成a+b。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flywtime
2011-06-07
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
#define的作用是直接替换。
S1=2×3+4=10。其中3+4为X
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式