若有以下宏定义:#define X 5#define Y X+1#define Z Y*X/2

若有以下宏定义:#defineX5#defineYX+1#defineZY*X/2则执行以下printf语句后,输出结果是。inta=Y;printf("%d,",Z);... 若有以下宏定义:
#define X 5
#define Y X+1
#define Z Y*X/2
则执行以下printf语句后,输出结果是 。
int a=Y;
printf("%d,",Z);
printf("%d\n",--a);
A. 7,6
可以说下那个Z的详细解答吗?不是很懂啊
展开
 我来答
爱学习爱教育的小豆丁
高粉答主

2020-07-29 · 教育达人一起学习
爱学习爱教育的小豆丁
采纳数:176 获赞数:138184

向TA提问 私信TA
展开全部

7、5

根据宏定义知:

X=5,

Y=X+1=6,

Z=Y*X/2

=X+1*X/2

=7,a=Y=6,

--a=5。

宏定义在 C 语言源程序中允许用一个标识符来表示一个==字符串==,称为“==宏/宏体==” ,被定义为“宏”的==标识符==称为“==宏名==”。

扩展资料

相对于==全局变量==两者的区别如下:

1.宏定义在编译期间即会使用并替换,而全局变量要到运行时才可以。

2.宏定义的只是一段字符,在编译的时候被替换到引用的位置。在运行中是没有宏定义的概念的。而变量在运行时要为其分配内存。

3.宏定义不可以被赋值,即其值一旦定义不可修改,而变量在运行过程中可以被修改。

4.宏定义只有在定义所在文件,或引用所在文件的其它文件中使用。而全局变量可以在工程所有文件中使用,只要再使用前加一个声明就可以了。换句话说,宏定义不需要extern。

__那个__
推荐于2018-04-13 · TA获得超过164个赞
知道答主
回答量:106
采纳率:0%
帮助的人:44.2万
展开全部
Y=X+1
那么Z=x+1*X/2
这个x+1没有括号
Z=5+1*5/2=7.5
%d是十进制整数

最后输出7
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
子_路_
2018-12-02
知道答主
回答量:25
采纳率:50%
帮助的人:1.3万
展开全部
7这个答案是对的,高赞评论已经解释过了,但是6是错的,--a是让a先减一,然后再用a,所以a的最终值应该是5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-07-01
展开全部
7,5
所谓宏定义就是简单替换。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
离离原上花开
2010-06-27 · TA获得超过6856个赞
知道大有可为答主
回答量:1923
采纳率:0%
帮助的人:713万
展开全部
7,5
所谓宏定义就是简单替换。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式