C语言详解(5)常量
2017-12-01 22:48
435 查看
常量
关于C语言详解系列blog的目录:http://blog.csdn.net/snake_lp/article/details/78630717
一、概述
从字面意思上,就是不会变化的量就叫做常量。常量是固定的值,在程序执行期间不会改变。常量可以是任何的基本数据类型,比如整型常量,字符型常量等等。
常量就像常规的变量,只不过常量的值在定义后不能进行修改。
二、分类
一个数值(比如:0x10),或者一个字符(‘a’),或者一个字符串都是常量。但是这样的常量没有名字,在程序设计的过程中,这一类常量就只能直接使用。如果这个常量使用频率比较大的情况下,这样的常量形式就很不方便了。
同时,常量和变量一样。可以定义,但是只能在定义的时候赋初值,之后在程序中就只能使用,不能赋值。
在赋值语句中,常量只能作为右值。所以建议在程序设计中,如果是比较语句,尽量将常量放置在表达式的左边,这样的做法是为了,当程序员误将“==”写成“=”时,在程序在编译的过程中,就能发现此错误。如果程序员误将“==”写成“=”时,此时,比较表达式的值为1,所以就会出现问题,但是编译器发现不了此问题。
三、变量的定义
变量的定义有三种方式:
1. 宏变量
使用此种方式,在编译的过程中,就是将宏定义左边的标识符直接替换为右边的常量值。比如:
#define MAX_NUM 0xFF
#define NAME “snake”
这样的定义方式可以将宏定义看做是常量,但是不是真正的常量。在编译的过程中,编译器只是简单将宏替换为实际的数据。我们在程序设计的时候,就可以将其理解为一个宏常量来使用。
2. 使用const来修饰
使用关键字const来定义常量。此种方式必须边定义边赋初值。只要定义结束,就不需要改变常量的值。比如:
const char NAME[] = “snake”;
const int MAX_NUM = 0xFF;
这样的定义方式,必须保证边定义边赋值。在C语言中其实const修饰的也是作为一个变量的,但是此变量为只读变量。就本质而言,它还是一个变量,只是此关键字指示程序,不能修改此变量的内存空间。const只对编译器有效,在程序运行时,是无效的。从本质上来看,它是一个只读变量,属于一个伪常量。在程序中,此类常量,其实是可以通过指针来修改数值的。具体在指针章节在介绍。
3. 枚举常量
枚举常量是真正意义的常量。在C语言中,enum是一种自定义的类型,默认情况下,常量在前一个常量的基础上加1。比如:
typedef enum{
CHANGAN = 0x01,
DFSK,
BYD,
BWM = 0x20,
JAC,
TOYOTA
}CAR;
常量的数值,可以随意设定。如果不进行赋值的话,就是在前一个的基础上加1.
在定义变量的时候,其名字一般为全大写。这样可以增加程序的可读性。
关于C语言详解系列blog的目录:http://blog.csdn.net/snake_lp/article/details/78630717
一、概述
从字面意思上,就是不会变化的量就叫做常量。常量是固定的值,在程序执行期间不会改变。常量可以是任何的基本数据类型,比如整型常量,字符型常量等等。
常量就像常规的变量,只不过常量的值在定义后不能进行修改。
二、分类
一个数值(比如:0x10),或者一个字符(‘a’),或者一个字符串都是常量。但是这样的常量没有名字,在程序设计的过程中,这一类常量就只能直接使用。如果这个常量使用频率比较大的情况下,这样的常量形式就很不方便了。
同时,常量和变量一样。可以定义,但是只能在定义的时候赋初值,之后在程序中就只能使用,不能赋值。
在赋值语句中,常量只能作为右值。所以建议在程序设计中,如果是比较语句,尽量将常量放置在表达式的左边,这样的做法是为了,当程序员误将“==”写成“=”时,在程序在编译的过程中,就能发现此错误。如果程序员误将“==”写成“=”时,此时,比较表达式的值为1,所以就会出现问题,但是编译器发现不了此问题。
三、变量的定义
变量的定义有三种方式:
1. 宏变量
使用此种方式,在编译的过程中,就是将宏定义左边的标识符直接替换为右边的常量值。比如:
#define MAX_NUM 0xFF
#define NAME “snake”
这样的定义方式可以将宏定义看做是常量,但是不是真正的常量。在编译的过程中,编译器只是简单将宏替换为实际的数据。我们在程序设计的时候,就可以将其理解为一个宏常量来使用。
2. 使用const来修饰
使用关键字const来定义常量。此种方式必须边定义边赋初值。只要定义结束,就不需要改变常量的值。比如:
const char NAME[] = “snake”;
const int MAX_NUM = 0xFF;
这样的定义方式,必须保证边定义边赋值。在C语言中其实const修饰的也是作为一个变量的,但是此变量为只读变量。就本质而言,它还是一个变量,只是此关键字指示程序,不能修改此变量的内存空间。const只对编译器有效,在程序运行时,是无效的。从本质上来看,它是一个只读变量,属于一个伪常量。在程序中,此类常量,其实是可以通过指针来修改数值的。具体在指针章节在介绍。
3. 枚举常量
枚举常量是真正意义的常量。在C语言中,enum是一种自定义的类型,默认情况下,常量在前一个常量的基础上加1。比如:
typedef enum{
CHANGAN = 0x01,
DFSK,
BYD,
BWM = 0x20,
JAC,
TOYOTA
}CAR;
常量的数值,可以随意设定。如果不进行赋值的话,就是在前一个的基础上加1.
在定义变量的时候,其名字一般为全大写。这样可以增加程序的可读性。
相关文章推荐
- Java Interface 是常量存放的最佳地点吗?
- PHP学习(五)--常量
- C#中的常量
- C#学习之路,学习笔记 2.6 变量的命名规则、常量 及 关键字
- 常量和变量的区别
- 关于指针(常量指针&&指针常量&&常量指针常量&&typedef)的总结
- javascript 未结束的字符串常量
- 类中static静态变量与const常量成员的初始化
- C++,常量,const,constant,引用,指针,形参,实参,函数,返回值
- 黑马程序员——Java基础语法---关键字、常量、变量、运算符
- c++的const常量优化
- javascript 未结束的字符串常量
- C语言基础(二)常量、变量、类型转换、转义符、printf、scanf
- const常量用extern声明定义的问题(extern变量不能在使用类里初始化)
- HiDef: 高效初始化常量
- 浅谈Java多线程编程中Boolean常量的同步问题
- 树莓派3b 语言常量设定
- VBScript学习笔记--第二章.常量、变量、循环和对象
- java枚举表示常量
- php 常量及数据类型知识点