使用 const 定义只读变量
第二种方法是将 Pi 定义为变量,但是告诉编译器,它的值是固定的,不能改变。
声明变量时,在变量前面加上 const 关键字,可以固化变量的值。例如:
const float Pi = 3.14159265f; //定义一个Pi的固定值变量Code language: JavaScript (javascript)
以这种方式定义 Pi 的优点是,Pi 是一个有指定类型的常量值。而前面的 #define PI 只是一个字符序列,在预处理阶段进行文本替换。
在 Pi 的声明中添加 const,如果之后在代码中试图去改变它的值,编译器会报错。
代码示例
#include <stdio.h>
int main(void)
{
float radius = 0.0f;
float diameter = 0.0f;
float circumeference = 0.0f;
float area = 0.0f;
const float Pi = 3.14159265f;
printf("请输入圆桌的半径:");
scanf("%f",&diameter);
radius = diameter / 2.0f;
circumeference = 2.0f*Pi*radius;
//Pi = 3.14159f; //这里尝试去修改,编译器会报错:assignment of read-only variable 'Pi'
area = Pi * radius * radius;
printf("\n周长是%.2f",circumeference);
printf("\n面积是%.2f",area);
return 0;
}Code language: PHP (php)
运行输出示例
请输入圆桌的半径:6
周长是18.85
面积是28.27Code language: CSS (css)
const 变量声明
const float Pi = 3.14159265f; //圆周率Code language: JavaScript (javascript)
核心要点
| 对比项 | #define 宏 | const 变量 |
|---|---|---|
| 本质 | 预处理阶段的文本替换 | 有类型的只读变量 |
| 类型检查 | 无 | 有(编译器进行类型检查) |
| 内存占用 | 不占用 | 占用内存 |
| 调试 | 不可调试 | 可调试 |
| 作用域 | 从定义处到文件末尾 | 遵循变量作用域规则 |
| 命名约定 | 全大写 | 可按变量命名(但通常也用大写或驼峰) |
优点总结:
const变量有明确的类型,编译器会进行类型检查,减少错误。- 试图修改
const变量会导致编译错误,确保值不被意外改变。 - 相比宏定义,
const变量更安全、更易于调试。
注意: const 变量必须在声明时初始化,之后不能再赋值。
Previous: #define 定义常量
Next: 极限值