- 常量
- 整型常量
- 实型常量
- 字符型常量
- 变量
- 变量的定义
- 变量的赋值
- 变量的初始化
- 自动变量
- 静态变量
在程序运行过程中,其值保持不变的量称为常量。
整型常量- 十进制:用数码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自动变量int main(){ char a,b; printf("请输入一个字符:"); scanf("%c",&a); b=a+3; //此处能与整型参与计算 printf("%c的后面第三个字符是:%cn",a,b); return 0; } //也就是说char 型数据可以看成整型数据,参与算数运算
用存储类别标识符auto定义的变量是自动变量,自动变量的存储空间是在程序运行时分配的,分配和释放由系统自动完成。
注意:
- 在定义变量时,缺省存储类别标识符系统默认是自动变量。
- 自动变量的存储空间在程序运行期间分配和释放,称为动态存储。
- 自动变量只是在定义它的那个局部范围内才起作用,称为局部变量。
- 自动变量在赋值前,它的值是不确定的。
- 自动变量的值不具有继承性。
用标识符static定义的变量是静态变量。
注意:
- 静态变量是在编译时分配存储空间,在程序运行结束时存储空间才被释放,称为永久存储。
- 静态变量的初始化是在编译时进行的,如果不显式地为静态变量初始化,系统自动置静态变量的初始化为0或0.0 。
#includeint main() { static int x=3;//显式初始化 static int y;//未显式初始化 static double z;//未显式初始化 printf ("x=%d,y=%d,z=%lfn",x,y,z); return 0; }
输出结果:
-静态变量的值具有继承性
#includevoid A(void);//声明函数A int main() { A();//调用函数A A(); A(); A(); return 0; } void A(void) { static int x=1;//定义静态变量想,并初始化 x=x+2; printf("x=%dn",x); }
输出结果:
- 静态局部变量的作用域具有局部性,静态局部变量的值只能在本函数中使用,但生存周期是永久存储
#includevoid A(void); int main() { int x=10; A(); printf("1:x=%dn",x); return 0; } void A(void) { static int y=1; y=y+2; printf("2:x=%dn",y); }
输出结果:
欢迎大佬指正



