2.2 C语言的数据类型
(1)基本类型还可以分为其他类型,主要为整型、字符型和浮点型 (2)构造类型包括:数组类型、共用体类型和枚举类型 (3)指针类型 (4)空类型
2.3 C语言的常量
2.3.1 直接常量
直接常量分为:整型常量、实型常量、字符型常量和字符串常量
1. 整型常量
整型常量即整数,包括正整数、负整数和零。C语言中,整型常量可以用十进制、八进制和十六进制表示。
十进制表示:由数字0~9,正、负号组成,如369,-663等。
八进制表示:以0为前缀,其后数字由0~7组成,如0163,036等;八进制数一般是无符号数。
十六进制表示:以0x或0X为前缀,其后由数字0---9和字母A~F组成,如0x12cd,0x6Fa等。十六进制数一般是无符号数。
注意:(1)在一个整型常量后面加一个字母u或U,认为是unsigned int型,如246U(2)在一个整型常量后面加一个字母l或L,认为是long int型,如12L。
2.实型常量
实型常量即实数,又称为浮点数。C语言中,实数只能用十进制形式表示,实数的表示方法有两种:小数形式和指数形式。
(1)小数形式:由整数部分、小数点和小数点部分组成,当整数部分或小数部分为0时,可以忽略不写,但是小数点不可省略。
(2)指数形式:由尾数部分。字母E或e和指数部分组成,当整数部分或者小数部分为0时,可以忽略不写,但是小数点不可省略。
注意:(1)以小数形式表示实数时,必须有小数点,并且小数点的前、后至少一边要有数字。 (2)以指数形式表示实数时,字母E的前后必须得有数字,并且指数部分只能是整数
3.字符型常量
(1)字符常量只能用单引号括起来,不能用双引号或其他括号(2)字符常量只能是单个字符,不能是字符串(3)字符可以是ASCII字符集中任意字符
表2.1 转义字符
| 转义字符 | 转义功能 | ASCII码 |
| \0 | 空字符 | 0 |
| \a | 响铃 | 7 |
| \b | 退格(Backspadce) | 8 |
| \t | 水平制表符(即横向跳格) | 9 |
| \n | 回车换行(Enter) | 10 |
| \v | 竖向跳格 | 11 |
| \f | 换页 | 12 |
| \r | 回车 | 13 |
| \ " | 双引号(“) | 34 |
| \ ′ | 单引号(′) | 39 |
| \ ? | 问号(?) | 63 |
| \\ | 反斜线字符(\) | 92 |
| \ ddd | 1---3位八进制所代表的字符 | |
| \xhh | 1---2位十六进制所代表的字符 |
说明:转义字符形式上由多个字符组成,但它是一个字符常量,之代表一个字符.转义字符的使用方法与一般字符常量的用法相同.
4.字符串常量
字符串常量是由一对双引号""括起来的零个或多个字符序列.字符串可以使用空格字符,转义字符和其他字符,也可使用汉字等文字字符.
2.3.2符号常量
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量.
符号常量的使用,可以为编写程序提供很多好处:
(1)增加程序的可读性:通过标识符就知道该常量的意思,即见名知义.
(2)提高程序的可维护性:通过符号常量使得修改常量很方便,只需在常量的定义处修改即可
(3)简化程序代码;通过符号常量可以简化复杂表达式的重复输入
(4)方便数组的定义;可以将整形符号常量作为数组的长度
2.4 C语言的变量
2.4.1 变量的定义与使用
在C语言中,所有的变量必须先定义后使用
1. 变量的定义
其定义格式:类型说明符 变量名表;
其中:(1)类型说明符必须是C语言中有效的数据类型,如:int,float,double,char等,用于指定变量的类型,该类型决定了编译时分配给变量的内存单元的多少:(2)变量名表可以由有一个或多个变量名组成,各变量名之间用","分隔.变量名必须是合法的C语言标识符,变量名一般使用小写字母;(3)变量的定义必须放在变量使用之前,一般在函数体的开头部分进行定义.
例如:
| int r; | / * 定义r为整数 * / |
| float v,f; | / * 定义v,f为单精度浮点型 * / |
| double x,y; | / * 定义x,y为双精度浮点型 * / |
| char ch; | / * 定义ch为字符型 * / |
在C语言中,基本数据类型包括char(字符型),int(整形),fioat(单精度浮点型)及double(双精度浮点型)等.不同的类型用于存放不同的数据,所需的存储空间也不相同.
2.变量的初始化
C语言允许在定义变量的同时对变量赋值,这个过程称为变量的初始化.如
| int x=2; | / * 定义一个整型变量x并赋初值2 * / |
| int s=1,t=1; | / * 定义两个整型变量s和t,并分别赋初值1 * / |
| float f=3.68; | / * 定义一个单精度型变量f并赋初值3.68 * / |
| char ch='x'; | / * 定义一个字符型变量ch并赋初字符x * / |
3.变量的使用
2.4.2 整形变量
表2.2 整形数据关键字,字节数和取值范围
| 关键字 | 类型 | 占用字节数 | 取值范围 |
| short int | 短整型 | 2 | -32768~32767 (-2*15~2*15-1) |
| int | 整形 | 4 | -2147483648~2147483647 (-2*31~2*31-1) |
| long int | 长整形 | 4 | -2147483648~2147483647 (-2*31~2*31-1) |
| unsigned short | 无符号短整型 | 2 | 0~65535 (0~2*16-1) |
| unsigned int | 无符号整形 | 4 | 0~4294967295 (0~2*32-1) |
| unsigned long | 无符号长整形 | 4 | 0~4294967295 (0~2*32-1) |
说明:(1)各种无符号整数所占字节数与相应的有符号整数相同.(2)有符号整数以二进制补码形式存储(3)无符号整数以二进制原码形式存储
2.4.3 实型变量
表2.3 实型数据关键字,字节数和取值范围
| 关键字 | 类型 | 占用字节数 | 取值范围 |
| float | 单精度型 | 4 | 3.4E—38~3.4E+38 |
| double | 双精度型 | 8 | 1.7E—308~1.7E+308 |
2.4.4 字符型变量
2.5 运算符和表达式
2.5.1 赋值运算符和赋值表达式
C语言中赋值运算符有“=”,“+=”,“-=”,“*=”,“/=”和“%=”等。用赋值运算符将运算对象连接而成的表达式称为赋值表达式
1. 简单赋值运算符
最简单的赋值运算符就是“=”,它的作用是将一个数值赋给一个变量。
2. 复合赋值运算符
表2.4 复合算术赋值运算符
| 运算符 | 应用举例 | 等价形式 |
| += | a+=x | a=a+(x) |
| -= | a-=x | a=a-(X) |
| *= | a*=x | a=a*(X) |
| /= | a/=x | a=a/(X) |
| %= | a%=x | a=a%(X) |
3.赋值表达式
2.5.2 算数运算符和算术表达式
1. 基本的算术运算符
表2.5 基本算术运算符
| 运算符 | + | - | * | / | % |
| 名称 | 加 | 减 | 乘 | 除 | 求余 |
2. 自增,自减运算符
C语言有两个特殊运算符“++”,“--”。
(1)++自增运算符:①前缀方式:用于变量前面,先计算后使用;②后缀方式;用于变量后面,先使用后计算
(2)--自减运算符
3. 算数运算符的优先级和结和性
C语言规定了运算符的优先级和结和性,单目运算符是右结合的,双目算术运算符是左结合的。
4. 算术表达式
算术表达式是由算术运算符,运算对象和括号连接起来的式子,运算对象可以是常量,变量和函数等。
2.5.3 逗号运算符和逗号表达式
2.5.4 求字节数运算符
2.6 数据类型转换
2.6.1 自动类型转换
2.6.2 强制类型转换



