C语言宏定义 中一选择题 概念性

来源:百度知道 编辑:UC知道 时间:2024/06/30 21:28:40
在宏定义#define MAX 30中,用宏名代替一个
A 常量 B 字符串 C 整数 D 长整数
答案居然是选B 困惑了 宏名MAX 代替了30 可 30不是常量 就是整数么 也就是要么A 要么 C 怎么是B呢?

答案肯定是B的,提问者的疑惑是30明明是一个常数,问什么会变成一个字符串呢!其实是提问者对宏定义的理解不够透彻造成的。
让我们来看一下宏定义的含义到底是什么(注:笔者自己的理解可能言语表达上不够严谨),宏定义的作用是在程序编译以前,把宏定义的内容(如题中MAX)用事先安排好的内容(如题中30)代替,然后在进行编译,也就是说宏定义的作用就有点像是我们人在编程序,然后写上了30这个字符串。只不过这个写的过程有一部分工作是编译器帮助我们完成的。所以宏定义可以理解为用一个字符串特定且一定的代替另一个字符串,宏定义是不允许重复定义的。

是用 30 代替的 MAX

宏定义的概念就是用某一标识符标识某个文本字符串。

宏定义是高级语言编译器提供的常用语法,其目的是利用某一标识符标识某个文本字符串。在编写程序时,如果程序中反复地使用某个数据或某段程序片段,就可以考虑将这个数据或程序片段定义为宏,然后每个出现该数据或程序片段的地方用宏名替代,这样做的好处是程序简洁,可读性好,而且当需要修改这些相同的程序片段时,只要修改宏定义中的字符串即可,不需要修改多处。

平时说字符串都是指string literal,也就是说"30"。这题的说法完全是混淆视听。

试问如果说MAX代替的是字符串,为什么C++里可以写#if MAX > 1