在宏定义#define PI 3.14159中,宏名PI代替的是一个()
A.常量
B.单精度数
C.双精度数
D.字符串
这题选什么?为什么?
宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译
宏定义又称为宏代换、宏替换,简称“宏”。
格式:
#define 标识符 字符串
其中的标识符就是所谓的符号常量,也称为“宏名”。
预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。
掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。
即在对相关命令或语句的含义和功能作具体分析之前就要换:
例:
#define PI 3.1415926
把程序中出现的PI全部换成3.1415926
说明:
(1)宏名一般用大写
(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义
(3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
(4)宏定义末尾不加分号;
(5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
(6)可以用#undef命令终止宏定义的作用域
(7)宏定义不可以嵌套
(8)字符串" "中永远不包含宏
(9)宏定义不分配内存,变量定义分配内存。
(10)宏定义不存在类型问题,它的参数也是无类型的。
那答案怎么选D
那答案怎么选D?
追答那么做道题作为一个类型吧,题意我理解错了!不好意思啊。
它可能是指3.1415926这个是字符串。
只要理解宏定义,这个题作为经典题去记,以后应该就不会错了吧?
感觉要是选字符串的话,没有那双引号,感觉怪怪的
字符串要有双引号的
追答别这样认为。因为宏定义是不同于字符串的定义的,你需要记住,宏定义是没有类型的。等到你学习嵌入式系统开发的时候理解会更深的。你也可以去百度一下宏定义这个东西,现代C单单从书本上学习是不够的。需要你从实际中时间总结。因为编译器的不同,有些东西还是不同的。在这条路上走的远点才能理解更深。
追问好吧!
书上的定义
答案选D
追答那你的双引号呢?
追问这题本来就没双引号
追答那就错了,字符串是引号
追问难道答案错了?
好像是这样的,对吗,课本
追问答案选D
我不知道为什么?
追答那常量是怎么定义的,这是什么语言,翻翻书
追问c语言
追答没等号 选d对
不记得了,十多年了