C语言的语言描述需要用到常量和变量,顾名思义,变量就是可以改变的量,常量是不能改变的量。例如血型,圆周率,性别就是不能改变的量。而工资,年龄,体重就是可以改变的量。
一、变量:
1.变量的创建:
创建一个变量,要先给出变量类型(上一节我们具体探讨了数据类型),再给出变量名,最后将其初始化。
//int age = 0; 这里变量等于几并不重要,关键是将其初始化,=1,2,3....都是可以的
age = age + 1; 变量是可以变化的,不断更新的
printf("%d\n",age);
2.变量的分类
变量分为局部变量和全局变量
当局部变量和全局变量的变量名相冲突时(即相同),局部变量优先
int a = 10; 全局变量:在大括号外面定义
int mian ()
{
int a = 100;
printf(“%d\n”,a);
return 0; 局部变量:在大括号内部定义
}
输出后我们可以发现,a=100;显示的是局部变量。
这里我们用一个例子介绍一个函数(可以附任何值),scanf(“%d%d",&a,&b);&是取值地址,%d是输出类型,其作用是读取键盘所输入的数字分别储存与a,b中。想要引用此函数需加define。
3.变量的生命周期与作用域
作用域:一段代码的变量名并不总是有效可用的,而限制其可用范围的就是其变量域。
局部变量;
局部变量的作用域就是局部变量所在范围,即哪里的局部变量可以执行,哪里就是局部变量的所在范围。其生命周期,顾名思义。就是它起作用的时效,因为局部变量就是定义在大括号内部,那么其实它的生命周期就是所在程序开始执行到所在程序执行结束,这一生命周期。
全局变量:
全局变量的作用域是整个工程。也就是说,全局变量可以被别的文件调用,只要是在一个项目里的,但需要用extern声明一下,如extern int b ;其生命周期就是程序的生命周期。
变量的创建可以放在大括号外,{}表示一个程序的开始与结束,return表示最终代码的结束。
二、常量
在此我们将常量分为四个部分,字符常量,const常量,#define定义的标识符常量,枚举常量。
1.字符常量:
在程序里面,为基本数据类型赋值的结果值被称之为字面常量,例如,int a = 10;这个10被称之为字面常量
- 整型字面常量
可以表示为10进制、8进制(以0开头),16进制(以0x开头),无符号整型字面常量后面加个u表示,长整型加L表示
int a1 = 10;
int a2 = 010; //8进制表示
int a3 = 0x10; //16进制表示
unsigned a4 = 10u; //无符号整型字面常量,u大小写都一样
long a5 = 10L; //长整型
long long a6 = 10LL; //长长整型
- 浮点字面常量
默认为双精度,在数字后面加个f表示单浮点精度,加L表示扩展精度,加e和一个整数表示科学计数法
float b1 = 3.14F; //单浮点精度
double b2 = 3.14; //双浮点精度
long double b3 = 3.14L; //扩展浮点精度
double b4 = 3.14e5; //科学计数法,e的前面可以是整型或者浮点型,但e的后面必须是整型
- 布尔字面常量
true(1)和false(0)
bool c1 = true;
bool c2 = false;
- 单字符/字符串字面常量
窄字符(char):单字符用单引号括起来,字符串用双引号括起来
单字符的定义与输出:
char d1 = 'A'; //单字符
char d2 = 65; //ASCII十进制
char d3 = 0101; //ASCII八进制
char d4 = 0x41; //ASCII十六进制
2.const常变量
其意思是本质属性是变量,但因const显示常量int a = 10;本为变量,加上const则有了常属性,但不能作为常量使用
被其修饰后不可更改否则报错。
3.define标识的常量
在文件头部#define Max 1000
则其已被定义后续不可改
4.枚举常量
它的值从零开始,每次增加一,想要改的话必须从赋初值里改
ensum Sex
{
Male = 3;
}
enum 枚举类型名{常量1,常量2,常量3,…};
例如定义一个星期的枚举常量:enum Week {Mon,Tue,Wed,…};
这就定义了一个新的数据类型:Week。
Week数据类型来源于int类型(默认)。
Week类型的数据只能有7种取值,它们是:SUNDAY,MONDAY,TUESDAY……SATURDAY。
其中SUNDAY = 0,MONDAY = 1……SATURDAY = 6。也就是说,第1个枚举值代表0,第2个枚举值代表1,这样依次递增1。
不过,也可以在定义时,直接指定某个或某些枚举值的数值。比如,对于中国人,可能对于用0表示星期日不是很好接受,不如用7来表示星期天。这样我们需要的个值就是 1,2,3,4,5,6,7。可以这样定义:
enum Week {MONDAY = 1,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY};
我们希望星期一仍然从1开始,枚举类型默认枚举值从0开始,所以我们直接指定MONDAY等于1,这样,TUESDAY就将等于2,直接到SUNDAY等于7。
枚举值,我们就称为枚举常量,因为它一经定义以后,就不可再改变,以下用法是错误的!
TUESDAY = 10; //错误!我们不能改变一个枚举值的数值。
用枚举常量来完成表达今天是星期三:
Week today = TUESDAY;