在C语言里,常量是指程序运行过程中值不能被修改的数据。正确表示常量不仅可以让代码含义更清晰,也能防止意外赋值带来的错误。常见的常量表示方式包括字面常量、const修饰、宏定义和枚举。

一、字面常量
字面常量是直接写在代码中的固定值,例如整数、浮点数、字符和字符串。它们没有名字,直接使用。
#include <stdio.h>
int main() {
int a = 10; /* 10是整型字面常量 */
double b = 3.14; /* 3.14是浮点字面常量 */
char c = 'A'; /* 'A'是字符字面常量 */
const char* s = "hi";/* "hi"是字符串字面常量 */
printf("%d %f %c %sn", a, b, c, s);
return 0;
}
二、const修饰的常变量
使用const关键字修饰的变量在初始化后不能再次赋值,被称为常变量。它具备类型检查,比宏更安全。
#include <stdio.h>
int main() {
const int MAX = 100; /* MAX是常变量 */
/* MAX = 200; 错误:不能修改const对象 */
printf("%dn", MAX);
return 0;
}
三、宏定义常量
通过#define预处理指令定义宏常量,在编译前做文本替换,没有类型信息。
#include <stdio.h>
#define PI 3.14159
#define BUF_SIZE 1024
int main() {
printf("%f %dn", PI, BUF_SIZE);
return 0;
}
四、枚举常量
当一组相关的整数常量出现时,可以用enum来定义,增强可读性。
#include <stdio.h>
enum Week { MON=1, TUE, WED, THU, FRI, SAT, SUN };
int main() {
enum Week today = WED;
printf("day=%dn", today);
return 0;
}
五、不同表示方式对比
| 方式 | 是否有类型 | 可否调试 | 适用场景 |
|---|---|---|---|
| 字面常量 | 有 | 否 | 临时固定值 |
| const常变量 | 有 | 是 | 需类型检查的常量 |
| 宏定义 | 无 | 否 | 全局数值或表达式替换 |
| 枚举 | 有 | 是 | 一组相关整数 |
实际开发中,建议优先使用const或enum来获得类型安全,只有在需要编译期文本替换时才使用宏定义。