1. 整数常量
- 整数常量可以是十进制、八进制或十六进制的常量
- 前缀指定基数
0x
或 0X
- 表示十六进制0
- 表示八进制- 不带前缀则默认表示十进制
- 整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意
212
215u
0xFeeL
078
032UU
---
int myInt = 10;
long myLong = 100000L;
unsigned int myUnsignedInt = 10U;
85
0213
0x4b
30
30u
30l
30ul
2. 浮点常量
3.14159
314159E-5L
510E
210f
.e55
3. 字符常量
- 字符常量是括在单引号中,例如,
x
可以存储在 char
类型的简单变量中。 - 在 C 中,有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义,称为转义字符:
转义序列 | 含义 |
---|
\\ | \ 字符 |
\' | ' 字符 |
\" | " 字符 |
\? | ? 字符 |
\a | 警报铃声 |
\b | 退格键 |
\f | 换页符 |
\n | 换行符 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ooo | 一到三位的八进制数 |
\xhh . . . | 一个或多个数字的十六进制数 |
4. 定义常量
- 变量名应为全大写
- 如果你试图对常量做修改,就会被编译器发现,指出为一个错误。
4.1. #define
预处理器
4.2. const
关键字
const 数据类型 常量名 = 常量值;
const int MAX_VALUE = 100;
4.3. #define
与 const
区别
- 通常情况下,建议使用
const
关键字来定义常量,因为它具有类型检查和作用域的优势,而 #define
仅进行简单的文本替换,可能会导致一些意外的问题。 #define
预处理指令和 const
关键字在定义常量时有一些区别:
- 替换机制:
#define
是进行简单的文本替换,而 const
是声明一个具有类型的常量。#define
定义的常量在编译时会被直接替换为其对应的值,而 const
定义的常量在程序运行时会分配内存,并且具有类型信息。 - 类型检查:
#define
不进行类型检查,因为它只是进行简单的文本替换。而 const
定义的常量具有类型信息,编译器可以对其进行类型检查。这可以帮助捕获一些潜在的类型错误。 - 作用域:
#define
定义的常量没有作用域限制,它在定义之后的整个代码中都有效。而 const
定义的常量具有块级作用域,只在其定义所在的作用域内有效。 - 调试和符号表:使用
#define
定义的常量在符号表中不会有相应的条目,因为它只是进行文本替换。而使用 const
定义的常量会在符号表中有相应的条目,有助于调试和可读性。