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);
} 展开
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);
} 展开
6个回答
展开全部
有一点啊,你的那个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。
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不知道对不对啊。当你拿不准一个算法的结果时,你可以编译一下,让它运行出结果,看看对不对,若和之前设想的结果不一样的话,就反推一下,看是哪里想错了,实际这也挺有意思的。
展开全部
这个其实和用#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)来替代那些复杂的语句或者常量,这样一来可以比较节省编程和调试时间。在编译链接时(如果要生成可执行文件,在片上系统编程上不同,不过也大同小异),直接把定义的标志在程序代码中转换成所表示的部分,这个标志它本身实际就没有在程序运行中起作用,只是在编写代码的时候使得工作量减少了而已。
举个例子:
#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)来替代那些复杂的语句或者常量,这样一来可以比较节省编程和调试时间。在编译链接时(如果要生成可执行文件,在片上系统编程上不同,不过也大同小异),直接把定义的标志在程序代码中转换成所表示的部分,这个标志它本身实际就没有在程序运行中起作用,只是在编写代码的时候使得工作量减少了而已。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个题应该是:#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
#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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#define是一种预处理,分带参数和不带参数,#define X a+b是不带参数的,当下面程序中遇到X则替换成a+b。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#define的作用是直接替换。
S1=2×3+4=10。其中3+4为X
S1=2×3+4=10。其中3+4为X
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询