分享一道关于#define的选择题(内含#define在预编译时的替换规则,程序环境和预处理相关知识)


题目名称

目录

题目名称

1.题目

2.题目分析

3.题目答案

4.题目知识点

4.1define 替换规则



推荐阅读顺序:

1.题目->3.答案->2.题目分析->4.题目知识点


1.题目

1、执行下面程序,正确的输出是( )

设有以下宏定义:

#define N 3+1

#define Y(n) ((N+1)*n)

则执行语句 z=2*(N+Y(5+1))后,z 的值为()

A、60         B、190         C、248         D、上述答案都不对 


2.题目分析

这是一道很典型的#define的替换规则的题目。

 


3.题目答案

      正确答案: A、60


4.题目知识点

4.1define 替换规则

在程序中扩展#define定义符号和宏时,需要涉及几个步骤。

1. 在调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。如果是,它们首先被替换。

2. 替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值所替换。

3. 最后,再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号。如果是,就重复上 述处理过程。

 

请注意

宏的参数不是计算之后进入而是直接替换进入的。

 

更多相关知识点请看我整理的这篇博客:

(1条消息) 程序环境和预处理(下):#define、#undef、命令行编译、条件编译、文件包含(超全整理,建议收藏!!!_vpurple__的博客-CSDN博客
————————————————

  大家好,这里是媛仔!欢迎来到媛仔的题目分享栏目,这里在之后应该会作为媛仔的错题本,将易错或者经典的题目记录下来分享给大家。感谢你阅读到最后,如果有什么错误或者遗漏欢迎私信我。

  这道题目的来源是我c语言结课的测试题,稍微感慨一下,如果我之前上课不昏睡过去的话,认真听课的话,我在测评的时候这道题就不会错了。不过还好有录播,亡羊补牢为时不晚。

  希望接下来能够更加努力,和大家共同进步!!

 

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vpurple__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值