计算机中的数据不单是简单的数字,所有计算机处理的信息,包括文字、声音、图像等都是以一定的数据形式存储的,数据在内存中保存,存放的情况由数据类型决定。
C语言的数据类型
基本类型:
整型,字符型,实型(浮点型)[单精度,双精度]
构造类型:
数组类型,结构体类型,共用体类型,枚举类型
指针类型
空类型
整数类型
整数类型即整型,C语言中又分为短整型(short),基本整型(int),长整型(long),和无符号型(unsigned)4种,无符号型又细分为无符号整型(unsigned int),无符号短整型(unsigned short),无符号长整型(unsigned long)。
注意:C语言没有规定以上各类型数据所占内存的字节数,且不同计算机在处理上有所不同。
整型数据溢出:若一个int型数据超出最大允许值,出现数据丢失的情况。解决办法是使用表示范围更大的数据类型,如long int。
说明:有符号数指存储单元最高位表示符号,无符号数表示存储单元中全部二进制位都用来存放数据。
C语言整型数据一般有十进制、八进制、十六进制3种表达形式。
- 十进制:与数学上的表示相同,如1234,-888等;
- 八进制:以数字0开头,后跟其他数字,如01234,-0888等;
- 十六进制:以0x开头,后跟其他数字,如0x00,0x1A等。
注意:在整数后面加一个字母l或L,则认为是长整型。
实数类型
实数类型即实型数据(浮点型数据),包括单精度float和双精度double两类。
说明:实数在计算机中只能近似表示,运算中也会产生误差。
C语言实型数据(浮点型数据)一般有2种表达形式:
- 浮点表示形式:即小数形式,小数点前后至少一边有数字,如1.23,0.88等;
- 科学计数法表示:在E(e)之前的尾数必须有数据(可以是小数),之后的指数只能是整数,指数为正则可以省略符号,如1.234E+6、1.234E6、-1.234e-6。
实型数据溢出:若一个float型数据超出最大允许值,出现数据丢失的情况。解决办法是使用表示范围更大的数据类型,如double,long double等。
字符类型
说明:
- 表示:用单引号表示,如‘a’,’A’等;
- 每个字符型数据在内存中占1个字节;
- 转义字符:用反斜杠()引导的一个字符或一个数字序列可以表示自负两,它将反斜杠后面的字符或数字转换成别的意义。
常见转义字符
符号常量
在C语言中可以使用宏定义命令#define定义一个标识符作为符号常量,符号常量名一般使用大写字母,以区分变量名,其一般定义格式如下:#define 标识符 常量
例如:
#define MAX 100
#define MIN 0
#define PI 3.14
作用:一旦某标识符定义成为一个常量后,以后在程序处理时,凡是遇到该标识符,都将替换成对应的常量。
变量与变量定义
变量定义语句
格式:数据类型名 变量表名;
作用:声明变量的名称和类型,分配相应的内存单元
变量定义的4种位置:
- 一般放在函数的开头部分声明,即局部变量,作用域只在本函数内;
- 函数名后的括号内声明,即函数形式参数,也是局部变量,作用域只在本函数内;
- 放在复合语句内声明,即临时变量,作用域只在复合语句内;
- 放在任何函数外声明:即全局变量,作用域在整个程序。
对于变量赋初值,有几点说明:
- 若=两边类型不一致,系统自动进行类型转换,转换时以=左边变量类型为准,因此,可能会造成数据丢失;
- 对几个变量赋同一个值,不能连等赋值,必须逐个赋值;
int a = b = c = 10;//非法赋值
int a = 10, b = 10, c = 10;//合法赋值 - 初始化变量值不是在编译阶段完成,而是在程序运行时执行,相当于一个赋值语句。
C语言运算符
自增运算符与自减运算符
++与–属单目运算符,操作对象只能是变量,功能使变量的值加1或减1,结合性为右结合。
自增(++)有两种使用格式,前加和后加。
- 前加
形式:++n,相当于n=n+1,运算顺序是先执行n=n+1再将n的值作为表达式的值。 - 后加
形式:n++,相当于n=n+1,运算顺序是先将n的值作为表达式的值,再执行n=n+1操作。
注意:++与–的操作对象只能是变量,不能是常量或表达式。3++或(i+j)++都是非法表达式。
赋值表达式
复合算术赋值运算符
说明:
- 优先级低于算术运算符、关系运算符、逻辑运算符。
- 结合性按自右向左方向结合。例如a=b=20/4相当于a=(b=20/4)。
逗号表达式
一般形式:表达式1,表达式2,…,表达式n
求解过程:先计算表达式1的值,再计算表达式2,以此类推。最后将表达式n的值作为逗号表达式的值,再将表达式n的类型作为逗号表达式的类型。
逗号表达式的优先级低于赋值表达式,级别最低。因此逗号表达式须用括号括起来,作为整体。结合性为自左向右,即左结合。
条件运算符
一般形式:表达式1?表达式2:表达式3
求解过程:先计算表达式1的值,如果为真,则求解表达式2的值并把该值作为整个表达式的值;如果为假,则求解表达式3的值并把该值作为整个表达式的值
条件运算符的优先级较低,只比赋值运算符高。结合性为右结合。
注意:条件表达式常用语两分支的简单情况,代替if-else语句。
长度运算符
sizeof是单目运算符,用来返回变量或数据类型的字节长度。使用sizeof可以增强程序的可移植性,使之不受具体计算机类型长度的限制。
类型转换
C语言类型转换可以归纳成3种转换方式:自动转换,赋值转换,强制转换。
自动转换类型转换规则(低优先级->高优先级):
char,short -> int -> unsinged -> long -> double<-float
赋值转换时将字符行数据赋值给整型变量,字符数据占整型数据的低字节,高字节补位。
强制转换一般形式:(类型名)(表达式)
参考资料:肖捷 侯家利——C语言
程序设计