版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2.1 关键字和标识符 1 . 关 键 字关 键 字 定 义已 被 T C 2 . 0 本 身 使 用 , 不 能 作 其 它 用 途 ( y n g t ) 使 用 的 字 。例 如 关 键 字 不 能 用 作 变 量 名 、 函 数 名 等 。T u r b o C 2 . 0 的 关 键 字扩 展 的 共 1 1 个 ( 如 a s m _ c s _ d s f a r n e a r 等 ) 由 A N S I 标 准 定 义 的 共 3 2 个 ( 如 l o n g i f c a s e c h a r s w i t c h e n u m t y p e d e f e x
2、 t e r n f o r r e t u r n u n i o n c o n s t f l o a t v o i d 等 )第1页/共60页第一页,共60页。2. 标识符 定义用来标识变量、常量、函数等的字符序列。组成规则由字母(az, AZ)、数字(shz)(09)、下划线(_)组成;第一个字母必须是字母或下划线;大小写字母表示不同意义;只有前 32 个字符有效;不能使用TC2.0 的关键字。例:判断下列标识符号合法性sum Sum M.D.John student_name ab #33 _above char 3days day Date lotus_1_2 $1232.1
3、关键字和标识符 M.D.Johnab#33char3days$123第2页/共60页第二页,共60页。2.2 数据类型概述(i sh) 1 . 什 么 是 数 据 类 型根 据 数 据 的 性 质 和 用 途 将 其 分 为 不 同 的 类 型 。C 语 言 程 序 中 所 用 到 的 每 一 个 量 ( 常 量 、 变 量 及 函 数 等 ) 都 是 程 序 的 基 本 操 作 对 象 , 它 们 都 隐 式 地 或 显 式地 与 一 种 数 据 类 型 相 联 系 。每 种 数 据 类 型 都 表 明 了 它 的 可 能 取 值 范 围 及 能 在 其 上 所 进 行 的 运 算 。2 .
4、 数 据 类 型 分 类C 语 言 中 的 数 据 类 型 , 大 体 上 可 划 分 ( h u f n ) 为 基 本 的 数 据 类 型 和 导 出 的 数 据 类 型 两 种 。 ( 见 数 据 类型 总 表 )第3页/共60页第三页,共60页。2.2 数据类型概述(i sh)C语言数据类型基本类型构造类型指针类型空类型 void定义类型 typedef字符类型 char整型实型单精度型单精度型 float双精度型双精度型 double枚举类型 enum数组结构体 struct共用体 union短整型短整型 short长整型长整型 long整型整型 int第4页/共60页第四页,共60
5、页。2.2 数据类型概述(i sh)第5页/共60页第五页,共60页。2.3 常量(chngling)与符号常量(chngling)1 . 常 量概 念程 序 运 行 时 其 值 不 能 改 变 的 量 ( 即 常 数 )分 类整 型 常 量 、 实 型 常 量 、 字 符 常 量判 别常 量 的 类 型 , 可 通 过 ( t n g g u ) 书 写 形 式 来 判 别 第6页/共60页第六页,共60页。 2. 符号常量 概念: 用标识符代表常量。 作用: 见名知意,一改全改。 定义格式: #define 符号常量 常量 一般用大写字母 是宏定义预处理命令(mng lng)不是 C语句
6、(见后面) 例如:#define PRICE 30 main( ) int num,total; num=10; total=num*PRICE; printf(total=%d,total); 2.3 常量(chngling)与符号常量(chngling)运行(ynxng)结果: total=300total=num*30;等价于等价于第7页/共60页第七页,共60页。2.4 整数(zhngsh)类型最 常 用 类 型 , 简 称 整 型 , 名 为 “ i n t ”1 . 整 型 数 据 分 类根 据 占 用 内 存 字 节 数 的 不 同 , 可 分 为 ( f n w i ) 以 下
7、 几 类 :第8页/共60页第八页,共60页。 2. 整型常量的三种表示形式 十进制:由数字 0 9 和正负号表示。 如:123, -456, 0 八进制:由数字 0 开头,后跟数字 0 7 表示。 如: 0123, 011 十六进制(sh li jn zh):由0 x开头,后跟 09,af,AF表示。 如:0 x123, 0Xff 请大家动手算一算: 0123=( )10 0 x123= ( )10 0Xff =( )102.4 整数(zhngsh)类型83291255第9页/共60页第九页,共60页。 3. 整型常量的类型匹配(ppi) 整型常量在程序中如何正确表示? 根据其值所在范围确定
8、其数据类型 (是long int 还是 int )。 在整常量后加字母l 或L,认为它是 long int 型 例: 30000 为 int 型 65536l 为 long int 型 12 为 int 型 12L 为 long int 型2.4 整数(zhngsh)类型第10页/共60页第十页,共60页。 4. 整型数据的内部表示 数值的表示方法 原码 最高位为符号位,其余各位为数值本身的绝对值。 反码 正数:反码与原码相同(xin tn); 负数:符号位为 1,其余位对原码取反。 补码 正数:原码、反码、补码相同(xin tn); 负数:最高位为1,其余位为原码取反, 再对 整个数加1。2
9、.4 整数(zhngsh)类型第11页/共60页第十一页,共60页。 例: 用一字节(z ji)表示数(更多字节(z ji)道理相同)2.4 整数(zhngsh)类型第12页/共60页第十二页,共60页。 负数(fsh)补码转换成十进制数 最高位不动,其余位取反加 1 例 补码:11111001 取反:10000110 加1:10000111=-7 整型数据在存中用补码存放 例 基本整型数100 和 -100 在存中用表示为:2.4 整数(zhngsh)类型 100-100第13页/共60页第十三页,共60页。2.5 实数(shsh)类型简 称 实 型 , 与 整 型 统 称 为 算 术 类
10、型1 . 实 型 数 据 ( s h j ) 分 类根 据 占 用 内 存 字 节 数 的 不 同 , 可 分 为 以 下 几 类 :第14页/共60页第十四页,共60页。 2. 实型常量的表示(biosh)形式 实型常量即实数(或浮点数),有两种表达形式。 十进制形式: 由数码 0 9 和小数点组成(必须有小数点) 例如:3.14、0.15 、.123、123. 、123.0、0.0 指数形式: E(或e) 例如: 1.25342e4 、 12.5342E3、125.342e2 、 都表示(biosh)实数12534.2,说明表示(biosh)不唯一。 规范的指数形式 小数点左边有一位非 0
11、 数字,如:1.25342e42.5 实数(shsh)类型第15页/共60页第十五页,共60页。 3. 实型常量(chngling)的类型匹配 在实型常量(chngling)后加字母 f 或 F,认为它是 float 型; 加字母 l 或 L,认为它是 double 型; 如:34.2f float 型 .5F float 型 12.56l double 型 2.5E3L double 型 默认 double 型。2.5 实数(shsh)类型第16页/共60页第十六页,共60页。 4.实型常量的舍入误差 在内存中,可以精确的存放一个整数,不会有误差,这是由于整型数值的范围较小; 而实型的数值的
12、范围较大,用有限的存储单元存储,能提供的有效数字总是有限的,因此有效数字以外的数字将被舍去,由此可能产生误差。 如: float 类型只有(zhyu) 67 个有效数字, 123456.1234e5 ( 12345612340.0 ) 中超出有效数字会被舍去。2.5 实数(shsh)类型第17页/共60页第十七页,共60页。 5. 实型数据的内部表示 在计算机内部,实型数据的存储当然还是以二进制形式存储,并且以浮点形式存放的。 即用以下四个部分表示一个实数 数符:这个数的符号,是正还是负数。占一位; 尾数:规格化的数字(shz)(即 0.* 形式)。 位数越多精度越高; 阶符:指数的符号; 表
13、示尾数中小数点的移动方向。占一位。 阶码:指数(是整数),即尾数中小数点移动位数。 位数越多,值域越宽2.5 实数(shsh)类型第18页/共60页第十八页,共60页。 实数的值 = (数符) 尾数 2 (阶符) 阶码 例:实数 3.14159 在内存(ni cn)中的存放形式2.5 实数(shsh)类型 数符 尾数 阶符 阶码第19页/共60页第十九页,共60页。2.6 字符(z f)类型简 称 字 符 型 , 包 含 A S C I I 字 符 集 。1 . 字 符 常 量 的 定 义用 一 对 单 引 号 ( 不 是 双 引 号 ) 括 起 来 的 单 个 字 符 。例 如 : A 、
14、1 、 等 。 2 . 字 符 常 量 的 值该 字 符 的 A S C I I 码 值 , 占 一 个 ( y ) 字 节 。例 如 : A 6 5 , a 9 7 , 0 4 8 , n 1 0第20页/共60页第二十页,共60页。 3. 转义字符 C语言还允许使用一种特殊形式的字符常量(chngling),就是以“”开头的转义字符。(见常用转义字符) 注意:若反斜杠或单引号本身作为字符常量(chngling),必须使用转义字符: 、 。 如: 101 A 012 n 376 x61 a 60 0 483 (错) 常用转义字符及含义 2.6 字符(z f)类型第21页/共60页第二十一页,
15、共60页。2.7 变量(binling)及其定义 1 . 变 量 概 念在 程 序 运 行 过 程 中 , 其 值 可 以 被 改 变 的 量 。它 们 可 与 数 据 类 型 结 合 起 来 分 类 。 2 . 变 量 两 要 素变 量 名 每 个 变 量 都 必 须 有 一 个 名 字 变 量 名 , 变 量 命 名 ( m n g m n g ) 遵 循 标 识 符 命 名 ( m n g m n g ) 规 则 。变 量 值 在 程 序 运 行 过 程 中 , 变 量 值 存 在 内 存 中 。在 程 序 中 , 通 过 变 量 名 来 引 用 变 量 的 值 。第22页/共60页第二
16、十二页,共60页。 3. 变量的存储 每一个变量都使用存储单元(cn ch dn yun)来存储其值。 当程序需要处理该变量时,就到存储单元(cn ch dn yun)中读取其值(读取操作并不改变存储单元(cn ch dn yun)的内容)。 为了便于存储管理,给每个存储单元(cn ch dn yun)分配一个序号,这个序号叫做地址。 对变量的操作依据地址进行(可读可写)。 若变量在一个存储单元(cn ch dn yun)存不下,则可以使用多个存储单元(cn ch dn yun)。当使用多个存储单元(cn ch dn yun)时,则第一个存储单元(cn ch dn yun)的地址(首地址)就作
17、为变量的地址。2.7 变量(binling)及其定义第23页/共60页第二十三页,共60页。 4. 变量的定义 在程序(chngx)中,常量可以不经说明而直接引用,而变量则必须先定义后使用。 定义的一般格式 类型名 变量1 ,变量2,变量n; 例 int i, j, k; float x, y ; double z; char c,e;2.7 变量(binling)及其定义 定义(dngy)一个双精度变量 z定义定义两个实型变量两个实型变量 x、y定义两个字符变量定义两个字符变量 c,e定义三个整型变量定义三个整型变量 i、j、k第24页/共60页第二十四页,共60页。 5. 变量(binli
18、ng)初始化 定义时赋初值 例 int a = 2, b, c = 4 ; float data = 3.67 ; char ch = A; int x = 1, y= 1, z = 1; int x = y = z = 1 ;(错!) 2.7 变量(binling)及其定义第25页/共60页第二十五页,共60页。 6. 变量的使用(shyng)及定义位置 先定义,后使用(shyng) 定义位置一般放在函数开头 例1:正确的变量定义与使用(shyng) main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(data=%fn,data
19、); 2.7 变量(binling)及其定义 变量定义变量定义可执行语句可执行语句第26页/共60页第二十六页,共60页。 例2:不正确的变量定义(dngy)位置 main( ) int a,b=2; a=1; float data; data=(a+b)*1.2; printf(data=%fn,data); 2.7 变量(binling)及其定义第27页/共60页第二十七页,共60页。2.7 变量(binling)及其定义 7. 变量的基本操作 赋值与引用(写与读) 8. 变量定义的作用 按类型分配存储空间,以后可按名字操作变量。 如 int i=1 ; 分配两个字节(z ji)的空间,对
20、 i 的赋值与引用就是对这两个字节(z ji)的赋值与引用。第28页/共60页第二十八页,共60页。 9.简单变量 整型变量 占字节(z ji)数随机器不同而不同 (见 2.5 整数类型) short int long 可用 sizeof (类型标识符) 测量变量所占字节(z ji)数 实型变量 (见 2.5 实数类型 ) float: 占 4 字节(z ji),提供 7 位有效数字 double: 占 8 字节(z ji),提供 1516 位有效数字 例: float a= 123456.789; /* a=123456.7*/ double b= 123456.789; /* b=1234
21、56.789*/2.7 变量(binling)及其定义有效数字(yu xio sh z)第29页/共60页第二十九页,共60页。 字符型变量(binling) 字符变量(binling)存放字符 ASCII 码 char 与 int 数据间可进行算术运算 例:整型数据与字符型数据间的关系 a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */ 注意 没有字符串变量(binling)! 字符串用字符数组存放2.7 变量(binling)及其定义第30页/共60页第三十页,共60页。2.8 运算符和表达式 1 . 运 算 符 和 表 达
22、 式 概 述运 算 符 概 念运 算 符 是 在 一 个 数 学 运 算 中 表 示 相 应 运 算 动 作 的 一 种 符 号 。 运 算 符 所 作 用 的 对 象 称 作 运 算 分 量 。在 C 语 言 中 , 除 控 制 语 句 和 输 入 输 出 函 数 外 , 其 它 所 有 基 本 操 作 都 作 为 运 算 符 处 理 。运 算 符 分 类T C 的 运 算 符 非 常 丰 富 , 主 要 分 为 三 大 类 :算 术 ( s u n s h ) 运 算 符 , 关 系 运 算 符 与 逻 辑 运 算 符 , 按 位 运 算 符 。除 此 之 外 , 还 有 一 些 用 于
23、完 成 特 殊 任 务 的 运 算 符 。第31页/共60页第三十一页,共60页。 一目和二目运算符 要求一个操作对象的运算符称为一目(一元)运算符。例如: -a 是对 a 进行一目负操作。 要求二个或多个操作对象的运算符称为二目或多目 (两元或多元) 运算符。例如: a + b 表达式的概念 用运算符和括号将运算对象 (常量、变量和函数等) 连接起来的、符合 C 语言语法(yf)规则的式子,称为表达式。例如:1 + a * sin(x) / 2 单个常量、变量或函数,可以看作是表达式的一种特例, 如:n、5 、sin(x)。将单个常量、变量或函数构成的表达式称为简单表达式,其它表达式称之为复
24、杂表达式。2.8 运算符和表达式第32页/共60页第三十二页,共60页。 运算符的优先级与结合性 结合性是指当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。 自左至右的结合方向,称为(chn wi)左结合性 (如 12 + 34 - 56 ) 。反之,称为(chn wi)右结合性。 结合性是 C 语言的独有概念。除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。 C语言规定了运算符的优先级和结合性。(见附录) 。2.8 运算符和表达式第33页/共60页第三十三页,共60页。 表达式的计算 括号内的表达式先计算。 按运
25、算符的优先级高低次序执行。如,先乘除(chngch)后加减。 如果在一个运算对象 (或称操作数) 两侧的运算符的优先级相同,则按C语言规定的结合方向 (结合性) 进行。 例如: 算术运算符的结合方向是“自左至右”,即:在执行“ab+c”时,变量 b 先与减号结合,执行“ab”;然后再执行 +c 的运算。2.8 运算符和表达式第34页/共60页第三十四页,共60页。 表达式计算的结果 结果的类型 C语言的所有运算(yn sun)只能在相同的数据类型之间进行,且结果也属于该数据类型。 表达式求值的每一步运算(yn sun)都需要进行类型检查,不同类型的数据进行运算(yn sun)时,需要按一组类型
26、转换规则 (见下一节) 进行处理。2.8 运算符和表达式第35页/共60页第三十五页,共60页。 结果的溢出 数据类型对计算的限制还表现在数据的范围(fnwi)方面,一种类型的数据有其确定的取值范围(fnwi),超出一个类型范围(fnwi)之外的数值在这个类型中就没有办法表示,如果表达式书写不当,表达式计算的结果可能超出类型表示的范围(fnwi)。这种情况叫溢出。 C语言系统对于计算溢出通常不报告错误, 计算会进行下去,但计算结果不正确,设计程序时要非常小心。 理解前面介绍的数据内部表示形式,易于分析结果溢出的原因。2.8 运算符和表达式第36页/共60页第三十六页,共60页。 例:给出程序的
27、执行结果( ji gu), 并分析原因。 #include main() /* 用整型格式输出表达式的结果( ji gu) */ printf(%d n”,32767+2); 2.8 运算符和表达式 -32767第37页/共60页第三十七页,共60页。2.8 运算符和表达式第38页/共60页第三十八页,共60页。 2. 算术运算符和算术表达式 基本算术运算符 符号: +、- (减法( jinf)/取负)、* 、/ 、%(求余数) 结合方向:从左向右, 单目运算时,从右向左 优先级: - (负) * / % + - (高) (中) (低) 说明: 两整数相除,结果为整数 % 要求两侧均为整型数据
28、 例1 :5/2? -5/2.0? 5%2? -5%2? 1%10? 5%1? 5.5%2? 例2 :计算 3*7 % 2 + 7%2*5* (1/2) 的值2.8 运算符和表达式-2.521- -11021100结果(ji gu)为:1第39页/共60页第三十九页,共60页。 混合运算及数据(shj)类型转换 混合运算及类型自动转换 C语言中,整型、实型和字符型数据(shj)间可以混合运算 (因为字符数据(shj)与整型数据(shj)可以通用)。 如果一个运算符两侧的操作数的数据(shj)类型不同,则系统按 “先转换、后运算” 的原则,首先将数据(shj)自动转换成同一类型,然后在同一类型数
29、据(shj)间进行运算。2.8 运算符和表达式第40页/共60页第四十页,共60页。 例:int i; double d; float f ; long l; 10 + a + i * f - d / l转换规则高 double float long unsigned 低 int char,short2.8 运算符和表达式intdoubledoubledoubleintdoubledouble第41页/共60页第四十一页,共60页。 数据类型强制(qingzh)转换 数据类型强制(qingzh)转换的一般格式为: (要转换成的数据类型)(被转换的表达式) 当被转换的表达式是一个简单表达式时,外
30、面的一对圆括号可以缺省。 例如 (double) a /* 将变量 a 的值转换成 double 型 */ (int) (x+y) /* 将 x+y 的结果转换成 int 型 */ (float) 5/2 /* 将5转换成实型, 再除以2(=2.5) */ (float)(5/2) /*将5整除2的结果2转换成实型2.0 */2.8 运算符和表达式第42页/共60页第四十二页,共60页。 注意 强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。 例如:(double) a 只是将 a 的值转换成一个 double 型的中间量,a的数据类型并未转换成double型。 较高类型向
31、较低类型转换时可能发生精度损失问题。 例如:(int) 2.1 的结果是 2,丢失(dis)了小数部分。2.8 运算符和表达式第43页/共60页第四十三页,共60页。 3. 自增 (+)、自减 (-) 运算符 作用 使单个变量(binling)的值增 1 或减 1。 用法与运算规则 前置运算:+i、-i , 先增减、后运算。 后置运算:i+ 、i-, 先运算、后增减。 结合方向 自右向左。如 - i+ 相当于 - (i+) 。 优先级 -、+、- (高) *、/ 、%(中) +、- (低)2.8 运算符和表达式第44页/共60页第四十四页,共60页。 说明(shumng) 常用于循环语句中以及
32、指针变量中(以后介绍)。 不能用于常量和表达式。 如 5+, -(a+b)都是非法的。 在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。2.8 运算符和表达式第45页/共60页第四十五页,共60页。 例:自增、自减运算(yn sun)符的用法与运算(yn sun)规则示例 main() int x=3, y, z ; printf(“x = %dn”, x); /* 输出 x 的初值 */ y = +x + 3; /* 前置运算(yn sun),+ 优先于 + */ printf(x = %d, y = %dn, x, y); z = x+5; /* 后置运算
33、(yn sun) ,+ 优先于 + */ printf(y=%d, y=%dn, x, y); 2.8 运算符和表达式第46页/共60页第四十六页,共60页。 4. 赋值运算符和赋值表达式 简单赋值运算符与赋值表达式 符号:= 赋值表达式格式:变量名 = 表达式 作用(zuyng):将一个表达式的值赋给一个变量。 结合方向:自右向左。(如: a = b = 2 ) 优先级:高于逗号运算符,比其他运算符都低 赋值表达式的值:左边变量的值,且可嵌套 例:a=3 /* 将3赋给a, 表达式的值为a的值3 */ a=b /* 表达式的值为 a 的值*/ a=3+7/2 /* “+”与“/” 优先级高于
34、“=”运算符 */ 2.8 运算符和表达式第47页/共60页第四十七页,共60页。 变量赋初值 概念 在定义变量时用类似赋值的方法给被定义的变量指定一个初始值。 说明 对变量可以进行全部或部分初始化。 几个变量取同一个初值时,不能采用多重赋值的形式,必需一个一个分开(fn ki)写。 在使用变量时,不仅要满足“先定义,后使用”的规定,还要保证在对变量进行取值的操作前变量一定要赋过值。方法是在定义时进行初始化,也可以先定义变量,后用赋值或输入语句给变量赋初值。2.8 运算符和表达式第48页/共60页第四十八页,共60页。例如int i = 1; 定义 int 型变量 i,并初始化成 1flat
35、f = 0.5; 定义 flat 型变量 f,并初始化成 0.5char c =a; 定义 char 型变量c,并初始化成 aint a, b, c=5; 定义 int 型变量 a, b, c,初始化 c为5int a=i+1; 变量初始化是在程序运行时进行的,可用已有定义的变量组成表达式,对变量赋值。 int a=b=c=5; 是不允许的。int a=5, b= 5, c= 5; 应分开(fn ki)单独写2.8 运算符和表达式第49页/共60页第四十九页,共60页。 复合赋值运算 构成:在赋值符“=”之前加上其他运算符 (二元运算符),可构成复合赋值运算符。 符号:+=、-=、*=、/=、
36、%=、 =、&=、=、|= 作用:简化表达式的写法,并提高(t go)编译效率。 可把类似:变量名= 变量名 + 表达式 简化成:变量名 += 表达式 例如:a 的值为6, 计算复合赋值表达式的值 a += a -= a+a2.8 运算符和表达式12a=a-12-6a = -12相当于a 的值变为 -6相当于a=a+(-6)(-6)(6)第50页/共60页第五十页,共60页。 赋值操作中的类型转换 什么情况下转换: 赋值运算符两侧的数据类型不一致时。 转换规则 系统自动把右侧表达式求得的值,按赋值号左边变量(binling)的类型进行转换,也可用强制转换的方式, 人为地进行转换后赋给赋值号左边的变量(binling)。这种转换只限于数值数据之间。 说明 这部分的内容较难掌握, 要学习好这部分的内容,对数据内部的表示形式必须理解透彻。 对于在不同类型数据间赋值时,会出现意想不到的结果,而编译系统不提示出错,全靠经验来找问题。2.8 运算符和表达式第51页/共60页第五十一页,共
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论