符号常量使代码更具可读性和可维护性。常量的名称表明了它的含义,如果需要更改值,只需在定义中更改一次值,然后重新编译。C 使用预处理器为常量创建符号名称:
#define MAX_LENGTH 100
然后预处理器在您的源代码中进行文本替换,在编译之前替换出现的MAX_LENGTH
with 100
C++ 方法是将const
修饰符应用于变量声明:
常量 int MAX_LENGTH = 100;
这被视为MAX_LENGTH
只读的int
。
使用该方法有几个优点const
。首先,声明明确地命名了类型。
C 中的常量解释 – 如何使用 #define 和 const 限定符来定义常量
编程时,有时您会希望某些变量的值保持不变。在 C 语言中,您可能会将它们定义为常量。
您可以通过几种不同的方式在 C 中定义常量。在本教程中,您将学习如何使用#define
以及const
定义它们的限定符。
让我们开始吧。
如何#define
在 C 中定义常量
在 C 中定义常量的常用方法之一是使用#define
预处理器指令,如下所示:
#define <VAR_NAME> <VALUE>
在上面的语法中:
<VAR_NAME>
是常量名称的占位符。- 建议您以大写字母命名常量,因为它有助于将它们与程序中定义的其他变量区分开来。
<VALUE>
是取值的占位符<VAR_NAME>
。#define
是一个预处理器指令。- 在程序编译之前,预处理器将所有出现的 替换
<VAR_NAME>
为<VALUE>
。
在 C 语言中,预处理器在编译之前处理源代码以生成扩展的源代码。如下图所示。
在程序的头文件之后包含所有常量的定义是一个很好的做法,如下所示:
#include <stdio.h>
#define CONSTANT_1 VALUE_1
#define CONSTANT_2 VALUE_2
//
int main()
{
//statements here
}
▶ 在下一节中,您将看到一个#define
用于声明 C 常量的示例。
如何使用#define
示例声明常量
考虑以下代码片段,其中有两个常量STUDENT_ID
和COURSE_CODE
.
#include <stdio.h>
#define STUDENT_ID 27
#define COURSE_CODE 502
int main()
{
printf("Student ID: %d is taking the class %d\n", STUDENT_ID,COURSE_CODE);
return 0;
}
# Output
Student ID: 27 is taking the class 502
在这个例子中:
- 预处理器将
STUDENT_ID
和COURSE_CODE
分别替换为 27 和 502。所以main()
函数的主体现在将是:
int main()
{
printf("Student ID: %d is taking the class %d\n", 27, 502);
return 0;
}
- 由于该
printf()
函数可以打印格式化字符串,格式说明符%d
(十进制整数)的两次出现被 27 和 502 替换。
尽管
#define
允许您定义常量,但您应该注意
不要在程序的其他地方重新定义它们。
例如,下面的代码,您重新定义了STUDENT_ID
. 它将编译和执行而不会出错。
#include <stdio.h>
#define STUDENT_ID 27
#define STUDENT_ID 207 //redefinition of a #define constant.
#define COURSE_CODE 502
int main()
{
printf("Student ID: %d is taking the class %d\n", STUDENT_ID,COURSE_CODE);
return 0;
}
根据您的编译器,您可能会收到一条警告,提示您正在尝试重新定义已定义的常量。
并且将使用最新定义中的值。
注意重新定义的值是如何207
被用作的STUDENT_ID
,覆盖了之前定义的值27
。
所以你现在知道#define
常数在某种意义上不是真正的常数,因为你总是可以重新定义它们。
前往下一部分了解const
预选赛。
如何使用const
限定符在 C 中定义常量
在 C 中,<data_type> <var_name> = <value>
是声明<var_name>
类型变量<data_type>
并为其赋值的语法<value>
。
要制作<var_name>
一个常量,您只需要在const
此语句中添加限定符,如下所示:
const <data_type> <var_name> = <value>;
在变量的定义中添加
const
关键字可确保其值在程序中保持不变。
const
限定符使变量只读。并且试图在程序的其他地方修改它会在编译过程中抛出错误。
▶ 前往下一部分,使用 修改前面的示例const
。
如何使用const
限定符示例声明常量
在前面的示例中,您有常量STUDENT_ID
和COURSE_CODE
。现在您将使用const
限定符将它们定义为常量。
- 由于它们都是整数,因此您可以将它们定义为
int
数据类型,并采用预期的值:27
和502
. const
在各自的定义中包含限定词。
这显示在下面的代码片段中:
#include <stdio.h>
int main()
{
const int STUDENT_ID = 27;
const int COURSE_CODE = 502;
printf("Student ID: %d is taking the class %d\n", STUDENT_ID, COURSE_CODE);
return 0;
}
# Output
Student ID: 27 is taking the class 502
您可以看到代码按预期工作。在 C 中,您不能重新定义现有变量。
例如,如果int my_var = 2
是第一个定义,如果您尝试重新定义my_var
为,您的程序将无法成功编译int my_var = 3
。但是,您始终可以重新分配变量的值。
这意味着 ifint my_var = 2
是定义,您可以my_var
使用简单的赋值语句(如my_var = 3
.
现在让我们尝试修改const
变量STUDENT_ID
。
#include <stdio.h>
int main()
{
const int STUDENT_ID = 27;
STUDENT_ID = 207; // modifying a true constant: NOT POSSIBLE
const int COURSE_CODE = 502;
printf("Student ID: %d is taking the class %d\n", STUDENT_ID, COURSE_CODE);
return 0;
}
你会看到程序没有编译成功。
并且错误消息显示:error: assignment of read-only variable 'student_id'
意味着您只能读取的值STUDENT_ID
而不能为其赋值。
因此,const
限定符呈现了一个真正的常量,它不受更改的影响,并且在程序执行期间无法更改。
结论
在本教程中,您学习了如何定义常量:
- 使用
#define
带有语法的预处理器指令#define <VAR_NAME> <VALUE>
,以及 - 使用
const
限定符将变量呈现为只读。
希望本教程对您有所帮助。快乐编码!