常量的分类
字面常量 和 符号常量
1. 字面常量
直接写在代码里的数值,无需定义,直接使用.例:100、3.14、“a”、“hello”等
字面常量分为4种:整型、浮点型、字符型、字符串常量
整型常量
C语言支持三中进制的整型常量(C语言不支持2进制)
|
进制 |
书写规则 |
实例 |
|---|---|---|
|
十进制 |
正常数字 |
1,2,3,5,9 |
|
八进制 |
以0开头 |
012 |
|
十六进制 |
以0x开头 |
0x1A |
2字符常量
用 单引号 '' 包裹,只能存放1个字符
示例:'A'、'9'、'#'
特殊:转义字符常量
|
转义字符 |
作用 |
|---|---|
|
|
换行 |
|
|
制表符(空格缩进) |
|
|
输出反斜杠 |
|
|
输出单引号 |
|
|
输出双引号 |
字符串常量
用 双引号 "" 包裹,可以存放多个字符
示例:"Hello C"、"12345"、"学习常量"
2.符号常量
符号常量是通过符号名定义的常量。符号常量可以用#define预处理指令或者const关键字定义。
预处理阶段直接纯文本替换,无类型检查


如图预处理的时候已经将文本替换了。
定义在函数外部,全局生效
不能被修改、不能赋值
常量名建议 全大写,区分变量
2. const 修饰常量(只读变量)
-
有数据类型,编译器会做类型检查,更安全
-
可以定义在局部/全局
-
必须初始化赋值,后续不可修改
-
特点:const常量有类型限制,编译器会进行类型检查。const常量存储在内存中,可以参与程序运行时的计算。
-
#define VS const 核心区别(高频考点)
-
对比维度
#define 宏常量
const 常量
类型检查
无,纯文本替换
有,类型严格检查
作用域
全局(默认整个文件)
随定义位置(局部/全局)
内存占用
不占用内存,直接替换
占用内存,属于只读变量
可否修改
完全不可修改
只读,不可修改
推荐场景
全局固定参数(PI、最大值)
需要类型安全、局部常量

4760

被折叠的 条评论
为什么被折叠?



