C语言中的常量(非常详细)
在 C语言中,常量是指在程序运行期间不会改变的固定值。
常量可以被看作一个名字固定、值不变的“盒子”,用于存储和处理数据,如整数、浮点数等。
对于整数字面常量,通常情况下,它们的类型是int。然而,如果一个整数字面常量的值太大,超过了 int 类型的值范围,那么编译器将尝试将它看作 unsigned int 类型。如果它仍然太大,那么编译器将继续将它依次类推为更大值范围的整型类型,如 long、unsigned long、long long 和 unsigned long long。
在 Visual Studio 中,由于 int 和 long 的值范围一致,因此编译器会跳过 long,并尝试使用 long long 或 unsigned long long。整型值范围如下表所示。
对于小数的字面常量,默认情况下,它们的类型是 double,即双精度浮点数类型。如果需要使用单精度浮点数类型,需要在字面常量后面添加后缀 f 或 F,表示该浮点型数据是单精度的,如 3.14 和 3.14f。
符号常量可以使用 #define 预处理指令来定义,例如:
举个例子,假设有一种商品的价格为 PRICE,当前为 3 元。现在我们要计算购买 10 件这种商品的总价格,具体代码如下:
例如,用 #define PRICE 3 定义符号常量 PRICE,而不是在程序中到处使用数字 3,这可以使程序更易于理解。
例如,某种商品的价格在很多地方都被使用了,但是有一天这个价格发生了改变,那么我们就需要在每一个使用过这个价格的地方对价格进行修改,这样修改起来会非常麻烦。但是,我们如果把商品的价格定义为符号常量,那么只需要修改这个符号常量的值。
有些同学可能会认为符号常量的好处可以通过变量来完全替代,那么为什么一定要使用符号常量呢?
符号常量和变量是两种不同的概念,其中最重要的区别是符号常量在程序中被定义为一种常量,它的值在程序运行过程中不能改变,而变量的值可以随时改变。
如果你使用的某个数据确定是固定不变的,那么使用符号常量就是最准确的。
常量可以被看作一个名字固定、值不变的“盒子”,用于存储和处理数据,如整数、浮点数等。
C语言字面常量
字面常量是指在程序中直接使用的常量,如 100、200、1.3344、"HelloWorld" 等。与变量不同,字面常量不需要在代码中声明,并且编译器通过其写法可以立即判断其类型。对于整数字面常量,通常情况下,它们的类型是int。然而,如果一个整数字面常量的值太大,超过了 int 类型的值范围,那么编译器将尝试将它看作 unsigned int 类型。如果它仍然太大,那么编译器将继续将它依次类推为更大值范围的整型类型,如 long、unsigned long、long long 和 unsigned long long。
在 Visual Studio 中,由于 int 和 long 的值范围一致,因此编译器会跳过 long,并尝试使用 long long 或 unsigned long long。整型值范围如下表所示。
类 型 | 值范围 |
---|---|
int | -2147483648~2147483647 |
unsigned int | 0~4294967295 |
long | -2147483648~2147483647 |
unsigned long | 0~4294967295 |
long long | -9223372036854775808~9223372036854775807 |
unsigned long long | 0~18446744073709551615 |
对于小数的字面常量,默认情况下,它们的类型是 double,即双精度浮点数类型。如果需要使用单精度浮点数类型,需要在字面常量后面添加后缀 f 或 F,表示该浮点型数据是单精度的,如 3.14 和 3.14f。
C语言符号常量
符号常量是指在程序中用一个名称表示的常量,也称为宏定义。符号常量可以使用 #define 预处理指令来定义,例如:
#define PI 3.1415926 // 定义名为 PI 的符号常量,其值为 3.1415926因此,定义符号常量的语法如下:
#define 符号常量值初学者在定义符号常量时经常会犯一个错误,即在定义语句的末尾加上分号。但是,在定义符号常量时,不需要在语句的末尾使用分号。添加分号通常会导致代码出现异常错误。
举个例子,假设有一种商品的价格为 PRICE,当前为 3 元。现在我们要计算购买 10 件这种商品的总价格,具体代码如下:
#include <stdio.h> #define PRICE 3 int main() { int num = 10; int total; total = num * PRICE; printf("商品总价格是:%d", total); return 0; }在程序中,我们并没有直接写 num*3,而是定义了一个符号常量 PRICE。这样做有什么好处呢?
1) 提高程序的可读性
符号常量能够为程序中使用的一些常量值取一个有意义的名字,这有助于提高程序的可读性和可维护性。例如,用 #define PRICE 3 定义符号常量 PRICE,而不是在程序中到处使用数字 3,这可以使程序更易于理解。
2) 便于程序的修改
使用符号常量可以使程序的修改更加方便。如果需要修改程序中使用的某个常量值,只需修改符号常量的定义,而不需要在整个程序中搜索和替换常量值。这可以减少出错的可能性,同时可以提高程序的可维护性。例如,某种商品的价格在很多地方都被使用了,但是有一天这个价格发生了改变,那么我们就需要在每一个使用过这个价格的地方对价格进行修改,这样修改起来会非常麻烦。但是,我们如果把商品的价格定义为符号常量,那么只需要修改这个符号常量的值。
有些同学可能会认为符号常量的好处可以通过变量来完全替代,那么为什么一定要使用符号常量呢?
符号常量和变量是两种不同的概念,其中最重要的区别是符号常量在程序中被定义为一种常量,它的值在程序运行过程中不能改变,而变量的值可以随时改变。
如果你使用的某个数据确定是固定不变的,那么使用符号常量就是最准确的。