常量的概念:
在 C 语言中,常量是在程序执行过程中其值不能被改变的量。与变量不同,变量的值可以在程序运行期间动态改变,而常量一旦被定义,其值就固定不变。使用常量可以提高程序的可读性和可维护性,避免在代码中直接使用一些硬编码的值,当需要修改这些值时,只需修改常量的定义即可。
常量的分类:
(一)整型常量:
整型常量表示整数值,有以下几种表示形式:
十进制常量:由数字 0 - 9 组成,没有前缀。例如:10、-20、0 等。
八进制常量:以数字 0 开头,后面跟着数字 0 - 7。例如:012 表示十进制的 10。
十六进制常量:以 0x 或 0X 开头,后面跟着数字 0 - 9 以及字母 a - f 或 A - F。例如:0xA 表示十进制的 10,0xFF 表示十进制的 255。
(二)浮点型常量:
浮点型常量用于表示带有小数部分的数值,有两种表示形式:
小数形式:由整数部分、小数点和小数部分组成。例如:3.14、0.5、.25(等价于 0.25)等。
指数形式:由尾数部分、字母 e 或 E 以及指数部分组成。例如:
3.14e2 表示 3.14\times10^{2},即 314;
1.2E - 3 表示 1.2\times10^{-3},即 0.0012。
(三)字符常量:
字符常量是用单引号括起来的单个字符,例如:'A'、'5'、'$' 等。每个字符常量在内存中占用一个字节,存储的是该字符的 ASCII 码值。此外,还有一些特殊的转义字符常量,用于表示一些无法直接输入的字符,常见的转义字符如下:
转义字符 | 含义 |
\n | 换行符 |
\t | 制表符 |
\\ | 反斜杠字符 |
\' | 单引号字符 |
\" | 双引号字符 |
(四)字符串常量:
字符串常量是用双引号括起来的字符序列,例如:"Hello"、"World"、"123" 等。字符串常量在内存中以字符数组的形式存储,并且在字符串的末尾会自动添加一个空字符 '\0' 作为字符串的结束标志。因此,字符串 "Hello" 在内存中实际占用 6 个字节的空间。
(五)符号常量:
符号常量是用一个标识符来代表一个常量值,有两种定义方式:
1、使用 #define 预处理器指令:
#define 是 C 语言中的预处理器指令,用于定义宏。其语法格式为:
#define 标识符 常量值
例如:
#define PI 3.14159
#define MAX_SIZE 100
在预处理阶段,编译器会将代码中所有出现的 PI 替换为 3.14159,将 MAX_SIZE 替换为 100。
2、使用 const 关键字:
const 关键字用于定义常量变量,其语法格式为:
const 数据类型 标识符 = 常量值;
例如:
const int num = 10;
const float price = 9.99;
使用 const 定义的常量具有类型检查的功能,并且可以在函数内部或局部作用域中定义。
常量的使用示例:
#include <stdio.h>
// 使用 #define 定义符号常量
#define PI 3.14159
int main() {// 整型常量int decimal_num = 10;int octal_num = 012;int hex_num = 0xA;// 浮点型常量float float_num1 = 3.14;float float_num2 = 3.14e2;// 字符常量char ch = 'A';char newline = '\n';// 字符串常量char str[] = "Hello";// 使用 const 定义常量const int max_size = 100;// 输出结果printf("十进制整数: %d\n", decimal_num);printf("八进制整数: %d\n", octal_num);printf("十六进制整数: %d\n", hex_num);printf("浮点型常量 (小数形式): %f\n", float_num1);printf("浮点型常量 (指数形式): %f\n", float_num2);printf("字符常量: %c\n", ch);printf("字符串常量: %s\n", str);printf("符号常量 (PI): %f\n", PI);printf("符号常量 (const 定义): %d\n", max_size);return 0;
}
注意事项:
字符常量和字符串常量的区别:字符常量用单引号括起来,只包含一个字符;字符串常量用双引号括起来,可以包含多个字符,并且末尾会自动添加 '\0' 结束标志。
#define 和 const 的区别:#define 是预处理器指令,在预处理阶段进行简单的文本替换,没有类型检查;const 是 C 语言的关键字,定义的常量具有类型,编译器会进行类型检查,并且可以在局部作用域中定义。
常量的初始化:使用 const 定义的常量必须在定义时进行初始化,否则会导致编译错误。
通过合理使用常量,可以使 C 语言程序更加清晰、易读和易于维护。希望这份文档能帮助你更好地理解和掌握 C 语言中的常量。