常量
常量:C/C++ 中的常量,指的是在程序运行过程中其数据值不可更改的量。
整型常量(整数)
十进制整数。例:7,20,1000。
八进制整数:以 0 开头的,由数字 0~7 组成。例:07,024,01750。
十六进制整数:以 0x 或 0X 开头的,由数字 0~9、字母 a~f 或字母 A~F 组成。例:0x07,0x14,0x3e8。
Example:将十进制整数 7、20、1000 转化为八进制整数、十六进制整数和长整型常数。
-
实型常量(小数):实型常量具有以下两种表示方式:
小数形式:带小数点的常数。例如:21.290000。
指数形式(科学计数法):由数符尾数(整数或小数)、阶码标志(E 或 e)、阶符和整数阶码组成的常数。例如:2.129000e+001。
NOTE:
实型常量默认为双精度 double 类型。
若实型常量以 F 或 f 结尾,表示该实型常量为单精度 float 类型常量。
若实型常量以 l 或 L 结尾,表示该实型常量为 long double 类型常量。- Example:
12.3f // float 型
12.3 // double 型
12.3e4f // float 型
12.3e4 // double 型
12.3e4l // long double 型
2.1E+5 // 2.1 * 10^5 double 型
2.1E+5f // 2.1 * 10^5 float 型
123E-3 // 123 * 10^(-3) double 型
123E-3f // 123 * 10^(-3) float 型
字符型常量
一般字符常量:一个用单引号 ’ ’ 括起来的字符。
转义字符常量:一个用单引号 ’ ’ 括起的,并以反斜杠 ‘\’ 开头的字符,用于表示具有特殊功能的字符。
NOTE:
字符型常量占用 1Byte 内存空间,以 ASCII 码形式(即整型)存储。 因此,字符型数据对象和整型数据对象是可相互转换的。
ASCII 码表:
- 字符串常量:一个用双引号 ” ” 括起来的字符串。
NOTE:字符串常量中的字符序列在内存中连续存储,并在最后面加上转义字符 ‘\0’ 作为字符串结束标志,字符 ‘\0’ 占用 1Byte 内存空间。 例如:字符串 “HELLO” 在内存实际占据 6Bytes,实际字符存放顺序为 ‘H’、’E’、’L’、’L’、’O’、’\0’。
Example:
#define CharA 'a' //'a' 为字符常量,占用 1 Byte
#define StringA "a" //"a" 为字符串常量,占用 2 Bytes
#define StringB "Hello World!" //"Hello World!" 为字符串常量,占用 13 Bytes
int main()
{
printf("Length of Char \'%c\' is %d.\r\n", CharA, sizeof(CharA) / sizeof(char));
printf("Length of string \"%s\" is %d.\r\n", StringA, sizeof(StringA) / sizeof(char));
printf("Length of string \" %s\" is %d.\r\n", StringB, sizeof(StringB) / sizeof(char));
return 0;
}
输出结果:
符号常量 :使用符号来作为常量的标识,所以也叫常量名。
用 #define 来定义字符常量
用 const 定义符号常量
//形式:
#define 符号常量名 常量表达式
//例:定义 MAX 符号常量
#define MAX 100
//其中: #define为预处理命令宏定义
//形式:
const 数据类型 符号常量名 = 常量表达式;
//例:定义一个 double 型常量 PI ,其值为 3.1415926。
const double PI = 3.1415926;
NOTE:
- 使用 const 方式定义符号常量时,必须初始化符号常量
- 在程序运行过程中,不能修改符号常量的数据值
- 符号常量名一般用大写字母表示
- 符号常量定义中的常量表达式不能含有变量或函数
ERROR Example 1:
//错误示例: 使用const方式定义符号常量时必须初始化,并且在程序运行过程中不能修改其值
const double PI;
PI = 3.1415926;
ERROR Example 2:
//错误示例:常量表达式不能含有变量或函数
const int number = max(1 , 5);
变量
变量:表示一个具有名字的,具有特定属性的存储空间。在程序运行过程中该存储空间内的数据值可以被改变。
变量三要素:
- 变量名
- 数据类型
- 数据值
变量的定义:
//变量名列表可以包含若干个变量,用逗号隔开
数据类型 变量名列表;
NOTE:习惯上,变量名使用小写字母表示,而大写字母常用于字符常量或自定义数据类型名。
Example:
char a;
char a1, a2, a3;
变量的赋值:使用赋值运算符 “=” 可以给变量赋值。
变量的初始化:在变量定义时,给变量赋一个初始值,称为变量的初始化。
Example 1:变量赋值
int x; //声明定义
x = 10; //变量赋值
Example 2:变量的初始化
char c = 'x'; //声明并初始化
long w = 8L, l = 10L; //多个变量初始化:w = 8, l = 8
double area, radius = 20; //将变量radius初始化为20, area只是定义没有初始化。
NOTE:若只是声明定义了变量的数据类型,但却没有为变量赋予数据值,则变量所分配的内存单元中还保留着自上一次内存单元存储的旧数据。