程序中使用的各种变量都需要遵循先定义再使用的原则,而对于变量的定义分为三个方面:数据类型,存储类型和作用域
(一)数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类。
1 、基本数据类型最主要的特点是,其值不可以再分解为其它类型
2、构造数据类型的特点是,其值可以分为若干个“成员”或“元素”,每个“成员”有事一个基本数据类型或者构造类型。在C语言中,构造类型有以下几种:数组类型、结构体类型、共用体(联合)类型
3 、指针是一种特殊的,同时又是具有重要作用的数据类型。其值用来表示某个变量在内存储器中的地址。虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量,因此不能混为一谈
4 、在调用函数值时,通常应向调用者返回一个函数值,而有些函数不需要返回值,这种函数可以定义为“空类型”。其类型说明符为void
(二)存储类型分为包含四种 auto(自动变量) static (静态变量) extern(外部变量) register(寄存器变量)。在C语言中常用的为静态和外部变量
1 、 static 根据变量类型分为静态局部变量和静态全局变量。(1)静态局部变量 它与局部变量的区别在于: 在函数退出时, 这个变量始终存在, 但不能被其它函数使用, 当再次进入该函数时, 将保存上次的结果。其它与局部变量一样(2)静态全局变量它与全局变量的区别在于:全程变量可以再说明为外部变量(extern), 被其它源文件使用, 而静态全程变量却不能再被说明为外部的, 即只能被所在的源文件使用。
2 、extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外, 还要 被其它文件使用。
二、整型数据的分类
(一)整型数据的一般分类如下:
1、 基本型:类型说明符为int,在内存中占2个字节。
2、短整型:类型说明符为short int或short。所占字节和取值范围均与基本型相同。
3、长整型:类型说明符为long int或long,在内存中占4个字节。
4、无符号型:类型说明符为unsigned。++i
(二)整型数据的表示方法
1、十进制数:十进制数没有前缀。其数码为0~9。其中0不能作为第一位
2、八进制数:八进制数必须以0开头,即以0作为八进制数的前缀。其数码为0~7。八进制数一般为无符号数
3、十六进制数:十六进制数前缀0X或0x。其数码取值为0~9,A~F或a~f。
三、自增自减运算符
++i:i自增1后再参与其他运算(--i)与之相同
i++参与运算后,i的值再自增1.(i--)与之相同 (符号在前先运算再自增减,符号在后运后再自增减)
四、逗号运算符
在C语言中逗号“,”也是一种运算符,称为逗号运算符其功能。是把两个表达式连接起来组成一个表达式, 称为逗号表达式。其一般形式为: 表达式1, 表达式2
其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。
1、逗号表达式一般形式中的表达式1和表达式2 也可以又是逗号表达式。表达式1, ( 表达式2, 表达式3 )形成了嵌套情形。因此可以吧逗号表达式扩展为以下形式:表达式1, 表达式2, …表达式n 整个逗号表达式的值等于表达式n的值
2、程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。
3、并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的间隔符。
比如
#include <stdio.h>
int main(int argc, char *argv[]) {
int a1,a2,b=2,c=7,d=5;
a1=(++b,c--,d+3); // a2=0 b=3 c= 7(暂时按7算以下为6) d=5 a1=(d+3)=8
printf("a1=%d a2=%d b=%d c=%d d=%d", a1,a2,b,c,d);
// 打印结果为a1=8 a2=0 b=3 c=6 d=5
a2=++b,c--,d+3; // a2=4 b=4 c=6(现在为6以下为5) d=5
printf("a1=%d a2=%d b=%d c=%d d=%d", a1,a2,b,c,d);
// 打印结果为a1=8 a2=4 b=4 c=5 d=5
}