常量
在程序运行过程中,其值保持不变的量称为常量。
整型常量
- 十进制:用数码0~9、正负号表示的十进制整数。
在十进制整型常量后加小写字母l或大写字母L表示数
例如:64L、65415l - 八进制:以数字0开头,用数码0~7、正负号表示的整数。
在八进制整型常量后加小写字母l或大写字母L表示数
例如:027、036、-015
- 十六进制:以数字0和小写字母x或大写字母X开头,用数码0 ~ 9或小写字母a ~ f或大写字母A~F、正负号表示的十六进制整数。
在十六进制整型常量后加小写字母l或大写字母L表示数。
例如:0xa8、0X59、-0X39
实型常量
- 十进制小数形式(定点形式):由数码0~9、正负号和小数点(必须有小数点)组成的十进制小数表示的实数。
例如:3.14、-0.271、0.0、0.、.6
- 指数形式(浮点形式):由尾数、字母e或E、阶码三部分组成,其中尾数为十进制小数或整数,阶码为-308~308的十进制整数。
例如:3.14159e2表示十进制3.14159102 、31415.9E-2表示十进制数31415.910-2。
字符型常量
用单引号括起来的单一字符(包括转义字符)称为字符型常量。
例如:’a’、’A’、’2’、’\n’ 、 ’\101’
- 这里重点介绍转义字符
以反斜杠”\”开头,后跟一个规定的字符或数字串,用来表示一个字符,这种表示形式称为转义字符。
变量
- 变量是在程序运行过程中,其值可以改变的量。
- 这里要注意的是每一个变量在使用前都需要进行类型定义,即==“先定义,后使用”==
- C语言的变量有操作属性和存储属性两种属性。
- 操作属性由数据类型来决定,它规定了变量的存储空间的大小(即存储长度)、取值范围和所允许的操作。
- 存储属性由存储类别决定,他决定了所定义的变量在哪里存放,即变量的存储机构是什么;何时为其分配存储空间,何时释放它的存储空间,即变量的生存周期;变量其作用的范围有多大,即变量的作用域。
变量的定义
变量定义的一般格式:
【类别标识符】 类型标识符 变量名;
说明:
- 类别标识符用来说明变量名表中变量的存储类别,存储类别标识符包括auto(自动)、register(寄存器)、static(静态)。
- 类型标识符用来说明变量中变量的数据类型,类型标识符包括short(短整型)、int(整型)、long(长整型)、float(单精度)、double(双精度)、char(字符型)等。
变量的赋值
变量定义后,要想给变量一个确定的值,可以采用数据输入的方法(调用scanf),也可以给变量赋值。
变量赋值的格式:
变量=表达式;
其中“=”为赋值号左端通常必须是变量,左端可以是任意表达式。
变量的初始化
在变量定义时,给变量赋值就称为变量的初始化。
例如:int a=32;
值得一提的是:字符型数据与整型数据具有通用性
//例如以下代码
#include <stdio.h>
int main(){
char a,b;
printf("请输入一个字符:");
scanf("%c",&a);
b=a+3; //此处能与整型参与计算
printf("%c的后面第三个字符是:%c\n",a,b);
return 0;
}
//也就是说char 型数据可以看成整型数据,参与算数运算
自动变量
用存储类别标识符auto定义的变量是自动变量,自动变量的存储空间是在程序运行时分配的,分配和释放由系统自动完成。
注意:
- 在定义变量时,缺省存储类别标识符系统默认是自动变量。
- 自动变量的存储空间在程序运行期间分配和释放,称为动态存储。
- 自动变量只是在定义它的那个局部范围内才起作用,称为局部变量。
- 自动变量在赋值前,它的值是不确定的。
- 自动变量的值不具有继承性。
静态变量
用标识符static定义的变量是静态变量。
注意:
- 静态变量是在编译时分配存储空间,在程序运行结束时存储空间才被释放,称为永久存储。
- 静态变量的初始化是在编译时进行的,如果不显式地为静态变量初始化,系统自动置静态变量的初始化为0或0.0 。
#include <stdio.h>
int main()
{
static int x=3;//显式初始化
static int y;//未显式初始化
static double z;//未显式初始化
printf ("x=%d,y=%d,z=%lf\n",x,y,z);
return 0;
}
输出结果:
-静态变量的值具有继承性
#include <stdio.h>
void A(void);//声明函数A
int main()
{
A();//调用函数A
A();
A();
A();
return 0;
}
void A(void)
{
static int x=1;//定义静态变量想,并初始化
x=x+2;
printf("x=%d\n",x);
}
输出结果:
- 静态局部变量的作用域具有局部性,静态局部变量的值只能在本函数中使用,但生存周期是永久存储
#include <stdio.h>
void A(void);
int main()
{
int x=10;
A();
printf("1:x=%d\n",x);
return 0;
}
void A(void)
{
static int y=1;
y=y+2;
printf("2:x=%d\n",y);
}
输出结果:
欢迎大佬指正