
请高手解答C语言问题,谢谢!
#defineX5#defineYX+1#defineZY*X/2main(){inta;a=Y;printf("Z=%d,a=%d\n",Z,a);}执行结果为:...
#define X 5
#define Y X+1
#define Z Y*X/2
main( )
{int a; a=Y;
printf("Z=%d, a=%d\n", Z, a);
} 执行结果为: 展开
#define Y X+1
#define Z Y*X/2
main( )
{int a; a=Y;
printf("Z=%d, a=%d\n", Z, a);
} 执行结果为: 展开
5个回答
展开全部
Z = Y*X/2 = X+1*X/2 = 5+1*5/2 = 5 + 2 = 7
a = Y; a = X + 1 = 6;
注意:
1.如果之前有了宏定义,那么在预处理的时候,只是进行简单的替换。
在这里 Y 被替换为 X+1;其实在宏定义的时候,很容易影响到后面的计算顺序,一个好的习惯就是在宏定义的时候加上(),比如 这里 如果 #define Y (X+1) 那么 Z的值就是 (X+1)*X/2;
2.printf("Z=%d\n",Z); 这里Z 是整形,因此在计算 1*5/2 的时候,计算的结果会舍去小数部分,1*5/2 的结果为 2.
a = Y; a = X + 1 = 6;
注意:
1.如果之前有了宏定义,那么在预处理的时候,只是进行简单的替换。
在这里 Y 被替换为 X+1;其实在宏定义的时候,很容易影响到后面的计算顺序,一个好的习惯就是在宏定义的时候加上(),比如 这里 如果 #define Y (X+1) 那么 Z的值就是 (X+1)*X/2;
2.printf("Z=%d\n",Z); 这里Z 是整形,因此在计算 1*5/2 的时候,计算的结果会舍去小数部分,1*5/2 的结果为 2.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf第二个Z被替换为X+1*X/2,X是5,所以值为7,而a=6,所以输出为:
Z=7,a=6
Z=7,a=6
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#define是宏替换,运行之前是先替换,然后执行的
#define X 5
#define Y X+1
#define Z Y*X/2
main( )
{
int a; a=Y;//a=Y=X+1=5+1=6
printf("Z=%d, a=%d\n", Z, a);
}
Z换成Y*X/2=X+1*X/2=5+1*5/2=5+2=7
输出7,6
#define X 5
#define Y X+1
#define Z Y*X/2
main( )
{
int a; a=Y;//a=Y=X+1=5+1=6
printf("Z=%d, a=%d\n", Z, a);
}
Z换成Y*X/2=X+1*X/2=5+1*5/2=5+2=7
输出7,6
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Z = Y*X/2 = X+1*X/2 = 5+1*5/2 = 7
a = Y = X+1 = 5+1 = 6
记住一点,宏定义只是单纯的替换,所以Y*X/2 = X+1*X/2 != (X+1)*X/2
a = Y = X+1 = 5+1 = 6
记住一点,宏定义只是单纯的替换,所以Y*X/2 = X+1*X/2 != (X+1)*X/2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询