c语言第2章.ppt
《c语言第2章.ppt》由会员分享,可在线阅读,更多相关《c语言第2章.ppt(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第2 2章章 C C语言基础语言基础C C 语言程序设计语言程序设计2023/4/22本章主要内容本章主要内容l l本章介本章介绍C语言的基言的基础,包括:,包括:数据类型数据类型 运算符和表达式运算符和表达式l l均是程序均是程序设计的基本知的基本知识l l为什么什么讨论这些知些知识?通常通常程序程序要对数据进行操作处理:要对数据进行操作处理:处理的对象是处理的对象是数据数据通过通过运算符和表达式运算符和表达式进行操作进行操作2023/4/23例如:例如:【例【例2.1】计算圆的面积,半径为】计算圆的面积,半径为 5 cm。程序如下:程序如下:main()float r r,areaare
2、a;r r=5 5;areaarea=3.143.14*r r*r r;printf(%fn,areaarea);运算结果是输出运算结果是输出运算结果是输出运算结果是输出圆的面积:圆的面积:圆的面积:圆的面积:78.50000078.500000程序中用到的数据:程序中用到的数据:r、area、5、3.14对数据进行的运算:对数据进行的运算:*、=例例jc2_12023/4/24分析:分析:计算机操作处理时,要完成以下工作计算机操作处理时,要完成以下工作:l l在内存中给半径在内存中给半径 r 和运算结果和运算结果 area 开辟存开辟存储空间,存放它们的值。储空间,存放它们的值。应该留多大的
3、地应该留多大的地方来存放它们的值?方来存放它们的值?l l数据数据 5 和和 3.14 与与 r、area 不同,它们是在不同,它们是在编写程序时就给出确定的值,在运算过程编写程序时就给出确定的值,在运算过程中不会改变。中不会改变。这样的数计算机怎么处理?这样的数计算机怎么处理?l l对对整数整数 5 和和小数小数3.14,计算机,计算机存放时是否存放时是否有区别?有区别?涉及数据类型涉及数据类型的基本知识的基本知识2023/4/25C语言的数据类型语言的数据类型 C数据类型数据类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型枚举类型枚举类型整型整型整型整型 字符型字符型字符型字符
4、型 实实实实型型型型(浮浮浮浮点点点点型型型型)空类型空类型空类型空类型单精度型单精度型单精度型单精度型 双精度型双精度型双精度型双精度型 基本类型基本类型基本类型基本类型指针类型指针类型构造类型构造类型本章讨论本章讨论本章讨论本章讨论基本类型数据基本类型数据基本类型数据基本类型数据2023/4/262.1.1 整型数据整型数据 1整型数据的整型数据的类型型 基本整型数据基本整型数据 int,分配分配 2 Byte 短整型数据短整型数据 short int,分配分配 2 Byte 长整型数据长整型数据 long int,分配分配 4 Byte整型数据均以整型数据均以二进制补码二进制补码形式存储
5、形式存储问题:问题:为什么要采用补码?为什么要采用补码?如何表示?如何表示?2023/4/27计算机中正、负数的表示计算机中正、负数的表示 例如:例如:109(1101101)2要区要区别:109 和和 109 方法是:方法是:将符号也数将符号也数码化化即:即:正的符号正的符号 用用 0 表示表示 负的符号的符号 用用 1 表示表示 计算机中的数表示方法是:计算机中的数表示方法是:符号位符号位二进制数值二进制数值(以以 8bit 为例为例)109 110 1101 0110 1101109 110 1101 1110 11012023/4/28问题:计算机计算复杂化问题:计算机计算复杂化例如例
6、如计算:算:(-19)+(+22)1001 0011+0001 0110解决的方法是:解决的方法是:使用使用反码反码或或补码补码的表示方法(按前述的表示方法(按前述表示的编码称为表示的编码称为原码原码),即能将减法一律),即能将减法一律转换为加法。转换为加法。需要判断符号是否相同:需要判断符号是否相同:如果相同,结果符号不变,并进行绝对值相加如果相同,结果符号不变,并进行绝对值相加如果相同,结果符号不变,并进行绝对值相加如果相同,结果符号不变,并进行绝对值相加如果不同,结果取绝对值大的数的符号,并进如果不同,结果取绝对值大的数的符号,并进如果不同,结果取绝对值大的数的符号,并进如果不同,结果取
7、绝对值大的数的符号,并进行绝对值相减行绝对值相减行绝对值相减行绝对值相减2023/4/29原码、反码和补码原码、反码和补码l l正数正数:原原码、反、反码、补码相同相同 符号位为符号位为0,数值为对应的二进制数。,数值为对应的二进制数。109 01101101原原=01101101反反=01101101补补l l负数负数:原码原码符号位为符号位为1 1,数值为绝对值的二进制,数值为绝对值的二进制数。数。10911101101原原反码反码符号位为符号位为1 1,数值为绝对值的二进制,数值为绝对值的二进制数各位变反。数各位变反。10910010010反反 补码补码符号位为符号位为1 1,数值为绝对
8、值的二进制,数值为绝对值的二进制数各位变反加数各位变反加1 1。10910010011补补2023/4/2102.有符号和无符号整型数据有符号和无符号整型数据 有符号的整型数据有符号的整型数据 signed int 无符号的整型数据无符号的整型数据 unsigned int区区别是将是将最高位最高位看作符号位看作符号位还是数据位是数据位例如:例如:1111 1111 1010 1000作为作为有符号数有符号数使用时,最高为符号位使用时,最高为符号位为负数,值是:为负数,值是:-88(再求一次补)(再求一次补)作为作为无符号数无符号数使用时,最高为数据位使用时,最高为数据位为无符号的数,值是:为
9、无符号的数,值是:654482023/4/211例如:例如:main()unsigned int m;m=6544865448;printf(nm=%d%dn,m);printf(m=%u%un,m);例jc2_a输出结果:输出结果:m=-88m=65448按有符号数输出按有符号数输出按无符号数输出按无符号数输出2023/4/212整型数据的类型及规定整型数据的类型及规定l l方括号表示可方括号表示可选项l lint 分配分配2 Byte,long分配分配4 Byte类型名称类型名称类型名称类型名称类型符类型符类型符类型符bitbit取值范围取值范围取值范围取值范围整型整型整型整型(短整型短整
10、型短整型短整型)signed signed int int signed signed shortshort int int 1616-2 215152 21515-1-1(-32768(-3276832767)32767)无符号整型无符号整型无符号整型无符号整型unsignedunsigned int int16160 0 2 21616-1-1(0(065535)65535)长整型长整型长整型长整型 signed signed longlong int int3232-2-231312 23131-1-1无符号长整型无符号长整型无符号长整型无符号长整型 unsigned longunsig
11、ned long int int32320 0 2 23232-1-12023/4/2132.1.2 实型数据实型数据 1实型数据的类型实型数据的类型 单精度实型数据单精度实型数据 float,分配分配4 Byte 双精度实型数据双精度实型数据double,分配,分配 8 Byte2实型数据的存储实型数据的存储 单精度实型单精度实型单精度实型单精度实型指数部分指数部分指数部分指数部分小数部分小数部分小数部分小数部分 小数的符号位小数的符号位指数的符号位指数的符号位2023/4/214实型数据的类型及规定实型数据的类型及规定 l lC C标准并未具体规定各种实型数据所占字节数,也不规标准并未具体
12、规定各种实型数据所占字节数,也不规标准并未具体规定各种实型数据所占字节数,也不规标准并未具体规定各种实型数据所占字节数,也不规定具体小数和指数部分的位数。定具体小数和指数部分的位数。定具体小数和指数部分的位数。定具体小数和指数部分的位数。l l一般而言,小数部分位数多,数据表示的有效数字多,一般而言,小数部分位数多,数据表示的有效数字多,一般而言,小数部分位数多,数据表示的有效数字多,一般而言,小数部分位数多,数据表示的有效数字多,精度就高;而指数部分位数多,则表示的数据范围更大。精度就高;而指数部分位数多,则表示的数据范围更大。精度就高;而指数部分位数多,则表示的数据范围更大。精度就高;而指
13、数部分位数多,则表示的数据范围更大。有效数字的意义?有效数字的意义?类型类型类型类型类型符类型符类型符类型符ByteByte绝对值的范围绝对值的范围绝对值的范围绝对值的范围有效数字有效数字有效数字有效数字单精度型单精度型单精度型单精度型 floatfloat4 41010-37 -37 10 1038387 78 8 位位位位双精度型双精度型双精度型双精度型 doubledouble8 81010-307-307 101030830815151616位位位位例例例例jC2_ajC2_ajC2_ajC2_a2023/4/2152.1.3 字符型数据字符型数据 l l字符型数据字符型数据char,
14、分配分配 1 Byte l l字符型数据是指字母、数字、各种符号等字符型数据是指字母、数字、各种符号等用用ASCII值表示的字符值表示的字符l l例如例如 a 是一个是一个char类型数据,称作字符类型数据,称作字符常量,存储:常量,存储:0 1 1 0 0 0 0 12.1.4 2.1.4 空类型空类型l l空类型空类型voidl l通常与指针或函数结合使用通常与指针或函数结合使用 2023/4/2162.2 常量、变量与标准函数常量、变量与标准函数 l主要内容:主要内容:常量常量 变量变量 标准库函数标准库函数2023/4/2172.2.1 常量常量 l l在运行程序的过程中值保持不变的量
15、在运行程序的过程中值保持不变的量1整型常量整型常量 十进制十进制十进制十进制:0909 八进制八进制八进制八进制:0707,以,以,以,以 0 0开头开头开头开头 十六进制十六进制十六进制十六进制:0909,AF/afAF/af,以以以以 0 0 x x或或或或 0 0X X 开头开头开头开头例如:例如:100 -8 0 +123100 -8 0 +123010 024 0100 073010 024 0100 0730 0 x38 0 x10 0X10 0XFF 0 x0ax38 0 x10 0X10 0XFF 0 x0a2023/4/2181.整型常量整型常量l l整型常量的类型:整型常量
16、的类型:根据值大小默认类型。根据值大小默认类型。整型常量后面加整型常量后面加l或或L,则认为是则认为是long int型型 例如:例如:123L、0L、432l、0 x100l注意:注意:l l十六进制常量中可以使用大写字母十六进制常量中可以使用大写字母AF,也可以使用小写字母也可以使用小写字母af。l l八进制常量中不能出现数字八进制常量中不能出现数字 8 或或 9例如:例如:018、0921非法非法2023/4/2192.实型常量实型常量 十进制形式十进制形式十进制形式十进制形式 1.0 1.+12.0 -12.0 0.01.0 1.+12.0 -12.0 0.0 指数形式指数形式指数形式
17、指数形式 1 1e3 1.8e-3 -123E-6 -.1E-3e3 1.8e-3 -123E-6 -.1E-3等价于:等价于:等价于:等价于:1101103 3 1.810 1.810-3-3 -1231012310-6-6 -0.1100.110-3-3指数只能是整数,而尾数则可以是整数也可以是指数只能是整数,而尾数则可以是整数也可以是小数小数,无论指数或尾数均不能省略,无论指数或尾数均不能省略例如:例如:1 1e e、E.5E.5、E-3E-3 非法非法实型常量的类型:默认为实型常量的类型:默认为doubledouble型,后面加型,后面加F F(或或f f),),则强调表示该数是则强调
18、表示该数是float类型类型例如:例如:3.5f f、1e2F F 2023/4/2203.字符型常量字符型常量 l l可视字符常量可视字符常量可视字符常量可视字符常量 单引号括起来的单个可视字符单引号括起来的单个可视字符单引号括起来的单个可视字符单引号括起来的单个可视字符例如:例如:例如:例如:aa、A A、+、33、等等等等 l l转义字符常量转义字符常量转义字符常量转义字符常量 单引号括起来的单引号括起来的单引号括起来的单引号括起来的 与与与与可视字符可视字符可视字符可视字符组合,例如:组合,例如:组合,例如:组合,例如:0000字符串结束标志字符串结束标志字符串结束标志字符串结束标志
19、n n回车换行回车换行回车换行回车换行 t t跳到下一个输出位置跳到下一个输出位置跳到下一个输出位置跳到下一个输出位置 双引号字符双引号字符双引号字符双引号字符 dddddd dddddd为为为为1 1到到到到3 3位八进制数所代表的字符位八进制数所代表的字符位八进制数所代表的字符位八进制数所代表的字符 xhhxhh hhhh为为为为1 1到到到到2 2位十六进制数所代表的字符位十六进制数所代表的字符位十六进制数所代表的字符位十六进制数所代表的字符2023/4/2214.字符串常量字符串常量 l l用双引号括起的一个字符序列用双引号括起的一个字符序列 例如:例如:ABC、123、a、nt nG
20、ood morningl l字符串常量的长度字符串常量的长度:所包含的字符个数所包含的字符个数 l l字符串常量的存储方式:字符串常量的存储方式:n nGG o o o o d dmm o o r rn ni i n n g g 00a a00所占存储单元数:所占存储单元数:串长度串长度1例如:例如:字符串字符串结束标记结束标记2023/4/2225.符号常量符号常量 l l以标识符来代表的常量以标识符来代表的常量以标识符来代表的常量以标识符来代表的常量l l事先编译预处理命令事先编译预处理命令事先编译预处理命令事先编译预处理命令definedefine定义定义定义定义l l编译时先由系统替换
21、为它所代表的常量,再进行编译时先由系统替换为它所代表的常量,再进行编译时先由系统替换为它所代表的常量,再进行编译时先由系统替换为它所代表的常量,再进行编译编译编译编译例如:例如:例如:例如:#define define LENLEN 2.52.5main()main()float a,b;float a,b;a=2*3.14*a=2*3.14*LENLEN;b=3.14*b=3.14*LENLEN*LENLEN;printf(a=%f,b=%fn,a,b);printf(a=%f,b=%fn,a,b);定义符号常量定义符号常量定义符号常量定义符号常量使用符号常量使用符号常量使用符号常量使用符号
22、常量编译前系统进行替换编译前系统进行替换编译前系统进行替换编译前系统进行替换2023/4/2235.符号常量符号常量main()float a,b;a=2*3.14*2.5;b=3.14*2.5*2.5;printf(a=%f,b=%fn,a,b);define是编译预处理命令,必须以是编译预处理命令,必须以“#”开开头头编译预处理命令在第编译预处理命令在第7章讨论。章讨论。替换为替换为替换为替换为2023/4/2242.2.2 变量变量 1.变量的有关概念量的有关概念l l在程序运行在程序运行过程中,其程中,其值改改变的数据,称的数据,称为变量,量,变量用量用标识符表示,称符表示,称为变量名
23、量名。l l变量必量必须“先定先定义后使用后使用”l l系系统为变量分配存量分配存储单元,存元,存储变量的量的值。l l编写程序写程序时通通过变量名来存、取量名来存、取变量量值。a a510510变量值变量值变量值变量值为变量分配的为变量分配的为变量分配的为变量分配的存储单元存储单元存储单元存储单元变量名变量名变量名变量名例如:例如:有有变量变量a a它的值是它的值是5 510102023/4/2252.变量定义变量定义变量定量定义的一般格式:的一般格式:数据数据类型型说明符明符 变量列表量列表;例如:例如:int i,j;long k,m;float x,y;char ch1,ch2;必须使
24、用合法的标识符作变量名必须使用合法的标识符作变量名不能使用关键字为变量命名不能使用关键字为变量命名2023/4/2263.变量的初始化:变量的初始化:允允许在在说明明变量的量的时候候对变量量赋初初值。例如:例如:int a=5,b=10+2;double x=23.568,y;char ch1=a,ch2=66,ch3=142;表示定表示定义变量并量并对变量存量存储单元元赋值。错误的初始化:错误的初始化:int a=3+b,b=5;float m=n=23.16;2023/4/2272.2.3 标准库函数标准库函数l l由由C编编译译系系统统定定义义的的一一种种函函数数,存存放放在在系系统函数
25、库中,用户可以根据需要随时调用统函数库中,用户可以根据需要随时调用l l常用函数常用函数如:如:如:如:printfprintf、scanfscanf、fabsfabs、sqrtsqrt、sinsin、(常用数学函数参见教材常用数学函数参见教材常用数学函数参见教材常用数学函数参见教材 P30 P30 表表表表2.52.5)l l函数函数调用形式用形式:函数名(参数表)函数名(参数表)例如:例如:putchar(a)sqrt(x)例例jc2_32023/4/2282.3 运算符和表达式运算符和表达式l l主要内容:主要内容:算术运算符和算术表达式算术运算符和算术表达式 赋值运算符和赋值表达式赋值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言
限制150内