常量与变量
在C语言中,数据的基本表现形式是常量和变量。不管是常量还是变量,都是需要在内存中开辟一块空间,用于数据的存放。
常量
-
定义:在我们程序执行过程中其值不能改变的量。
-
分类:int、float、double、char和符号常量。
整型常量(int)
-
整型常量可用十进制、八进制、十六进制三种形式表示。
-
十进制整型常量:由0~9的数字组成,没有前缀,不能以0开头(如:0是可以的,09是不可以的)。
-
八进制整型常量:以
0
为前缀,其后由0~7的数字组成,没有小数部分。(如:023) -
十六进制整型常量:以
0x
或者0X
为前缀,其后由0~9
的数字和A到F
(大小写均可)字母组成,没有小数部分。(如:0x00FF0000、十六进制的颜色值)
整型常量中的长整型数据可用
L
作为后缀(如:123L) -
-
整型常量的分类
-
有符号与无符号基本整型常量
-
有符号与无符号长整型常量
-
有符号与无符号短整型常量
-
-
整型常量的表示
-
十进制表示:可以使用十个数字符号0~9,以及+,-,如:123,-456
-
八进制表示:以0开头,可以是用7个数字符号0~7以及+,-,如:0123,-011
-
十六进制表示:以0x开头,符号有
0~9
,A~F
,a~f
,如:0x12,-0x11
-
浮点型常量
C语言中的浮点数就是平常所说的实数,有两种表现形式:
-
十进制小数形式:如:0.123,-17.8
-
指数形式(科学记数法),如:1230.0可以表示为1.23e3或者1.23E3
注意:
在符号e的前面必须要有数字
在符号e的后面必须为整数,不能是带有小数点的实数型。实型常量的后缀用F(或f)表示单精度型。后缀用L(或l)表示双精度型
字符常量
用单引号''
括起来的字符,如:'a'
、'A'
,'_'
等,比如:'霍'
就不是字符,一个汉字所占的字节数超过了1个。中文字符当成汉字理解(如:';'
,'。'
)。英文输入法下输入的字母、数字、符号都是单字符。
转义字符常量:以反斜杠'\'
开头的字符序列,表示控制及不可见的字符,如:
序号 | 字符形式 | 含义 | ASCll码 |
---|---|---|---|
1 | \n | 换行 | 10 |
2 | \r | 回车 | 13 |
3 | \0 | 空字符 | 0 |
4 | \t | 水平制表 | 9 |
字符串常量
说明:在C语言中,是支持字符串常量的,但不支持字符串变量,字符串变量需要使用字符数组或者字符指针实现。
-
用一对双引号
""
括起来的一个字符序列,如:"How do you do?","12","true" -
可以输出一个字符序列,如:printf("hello world!\n");
注意:
字符串常量"a"与字符常量'a'的区别:
系统自动为字符串常量加上结尾的"\0",使所占内存单元多一个,单字符常量的长度不变,可用sizeof()运算符来测量。
1中文字符 = 2英文字符,中文字符在内存中的实际占用空间 = 2个数据字节 + 空位字节(\0) = 3个字节
符号常量
定义一个标识符来代表一个常量。
-
如:用PI代表圆周率π,即:3.1415926
好处:
-
增加可读性
-
增强了可维护性
定义符号常量:
-
用编译预处理命令
#define(宏定义)
格式:
#define 标识符 字符串
-
标识符和字符串之间用空格隔开
-
句末不用分号
-
标识符的命名采用大写,如果有多个单词,使用下划线分割,举例:MAX_VAL,MIN_VAL,AVG
#include <stdio.h> // 定义一个符号常量π #define PI 3.14 // 定义一个符号常量r #define R 5 int main { int a = PI * R * R;// 预处理后:int a = 3.14 * 5 * 5 }
案例:
在程序中使用符号常量
#define PRICE 30 /*定义符号常量PRICE*/ #include <stdio.h> void main() { int num,total; /*定义整型变量*/ num = 10; /*给变量赋值*/ total = num * PRICE; /*符号常量参加运算*/ printf("total=%d\n",total); }
说明:
-
程序中用#define PRICE 30定义了符号常量PRICE的值为30,此后程序中出现的PRICE都用30代替
-
符号常量不占内存单元
-
此后在本函数中不允许改变PRICE的值,也不允许再为其赋新的值
-
使用符号常量的好处:
-
含义清楚
-
一改全改
-
变量
概念:
在程序执行过程中其中的值可以被改变的量,称之为变量
-
变量代表内存中具有特定属性的一个存储单元,它是用来存储数据的,也就是存放变量的值。
-
变量应该有一个名字,以便于通过名字访问变量。
格式:
数据类型 变量名列表;
举例:
#include <stdio.h> int main() { // ①声明变量并初始化 int age = 21; // ②先声明,再赋值 int count; count = 10; // ③初始化并修改变量的值 int number = 12; printf("%d\n",number);// 12,%d是十进制int的格式化符 number = 22; printf("%d\n",number);// 22,我们对同一个变量进行一个赋值的时候,后面赋的值会覆盖掉前面赋的值 }
基本类型:我们创建变量的同时在内存中开辟对应的内存空间
命名规则:
-
变量名必须以字母(a-z,a-Z),或下划线开头,后面可以跟若干字母、数字或下划线
-
变量名不能与C语言中已经存在的标识符(如:int,float,void,break)重名
标识符:
-
标识符的定义:用来表示对象名字的有效字符。对象包括变量、常量、数组、函数、类型等。也就是标识符就是对象的名字。
-
标识符的构成:
-
C语言规定标识符只能由字母、数字和下划线三种字符构成,且第一个必须为字母或者下划线。举例:number,_int
-
编译系统对大小写敏感。变量名和函数名一般用小写字母+下划线,常量名和枚举名一般用大写字母+下划线。举例:变量(set_count)函数(set_count())常量(SET_COUNT)
-
C语言中有三类标识符
-
关键字:有32个,系统有特定的含义和用途。如:float,int,if,else等,不能用作自定义表示符(变量和函数)
-
系统预定义的标识符。如:系统提供的库函数名sim,printf,main,scanf以及预处理命令define,include等。
-
用户标识符:用户定义的标识符,用来改程序中的变量、自定义函数、符号常量、数组、结构体、共用体、文件等命名。
-
-
注意:
在C语言中,要求对所用到的变量使用前必须先强制定义,即:先定义,后使用。
C语言中有32个关键字,不允许用户用来定义标识符。
12个预处理命令
说明:
-
一个类型说明语句可以同时定义多个类型的变量,各个变量之间使用逗号“,”分割,多个同类型的变量也可以用多个类型说明语句定义:
// 一个类型说明语句可以同时定义多个类型的变量 int a,b,c,d;// 同类型 int a = 3,b = 4,c = 5,d = 6; // 多个同类型的变量也可以用多个类型说明语句定义 int a; int b; int c; int d; int a1 = 3; int b1 = 4; int c1 = 5; int d1 = 6;
-
用类型说明语句定义的变量只是说明了为这些变量分了存储空间。以便于存放与之相同类型的数据,在未对这些变量赋值前,这些变量中的值是随机的。
-
C语言允许在定义变量的同时为这个变量赋初始值。
-
在为长整型变量初始化或者赋值时,如果被赋值数据为基本整型常量,则C编译系统自动将赋值数据转换成与相应变量类型一致。
long a = 12;// 左边是Long类型变量,右边是int常量,当完成赋值操作后,右边的12的类型转换为long
-
由于各种整型变量所占字节数有限,因此,他们所能存放的整数有一定的范围。