C语言程序设计_第2章 C语言基础.ppt_第1页
C语言程序设计_第2章 C语言基础.ppt_第2页
C语言程序设计_第2章 C语言基础.ppt_第3页
C语言程序设计_第2章 C语言基础.ppt_第4页
C语言程序设计_第2章 C语言基础.ppt_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

授课教师 厦门理工学院软件学院 C语言程序设计 第2章C语言基础 C语言程序设计 3 本章主要内容 本章介绍C语言的基础 包括 C语言使用的合法字符 单词 字符集标识符 单词的组成原则 程序处理的对象是数据数据类型 数据的存储 参与的运算数据表现形式 变量和常量数据操作 运算符和表达式C语言的语句类型 4 例如 例2 1 计算圆的面积 半径为5cm 程序如下 main floatr area r 5 area 3 14 r r printf f n area 运算结果是输出圆的面积 78 500000 程序中用到的数据 r area 5 3 14对数据进行的运算 数据的名称是标识符 例jc2 1 5 分析 计算机操作处理时 要表示各种处理的对象出现在程序的符号和字符可以使用英文字母吗 可以使用中文字符吗 合法的字符集合半径用r表示 面积用area表示 对象可以取什么样的名称 标识符 可以用作各种对象的名字 涉及C语言最基本组成 6 分析 计算机操作处理时 首先要解决数据的存放 事先要在内存中给半径r和运算结果area开辟存储空间 存放它们的值 应该留多大的地方来存放它们的值 数据5和3 14与r area不同 它们是在编写程序时就给出确定的值 在运算过程中不会改变 这样的数计算机怎么处理 对整数5和小数3 14 计算机存放时是否有区别 涉及数据类型的基本知识 7 2 1C程序的符号系统 主要内容 基本字符标识符 8 2 1 1基本字符 大写英文字母 ABC XYZ小写英文字母 abc xyz数字 012 9空白符 空格符 换行符 制表符特殊字符 9 2 1 2标识符 由字母 下划线和数字组成的字符序列用于程序中的变量 符号常量 数组 函数 数据类型等操作对象的名字 1 系统定义标识符具有固定名字和特定含义的标识符分为关键字和预定义标识符2 用户定义标识符用于对用户使用的变量 数组 函数等操作对象进行命名 10 关键字 数据类型 int char float double short long void signed unsigned enum struct union const typedef volatile存储类别 auto static register extern语句命令字 break case continue default do else for goto if return switch while运算符 sizeof 11 预定义标识符 系统标准库函数scanf printf putchar getchar strcpy strcmp sqrt等编译预备处理命令include define等 12 对标识符的规定 用户定义标识符必须以字母或下划线 开头不能含有除字母 数字和下划线 外的其他字符标识符中大小写字母含义不同关键字必须用小写字母 不允许使用关键字为变量 数组 函数等操作对象命名预定义标识符允许用户对它们重新定义 当重新定义后将改变它们原来的含义 13 正确区分标识符 正确区分哪些是合法标识符 哪些是不合法标识符 其中合法标识符中哪些是关键字 哪些是预定义标识符 哪些是用户定义标识符 Abcdefine2xdoublestudentm ya b 4 1Whileintletx ynamedo w tmCtrlswicthinclude 14 2 2C语言的数据类型 C数据类型 本章讨论基本类型数据 15 2 2 1整型数据 1 整型数据的类型基本整型数据int 分配4Byte短整型数据shortint 分配2Byte长整型数据longint 分配4Byte整型数据均以二进制补码形式存储 问题 为什么要采用补码 如何表示 16 计算机中正 负数的表示 例如 109 1101101 2要区别 109和 109方法是 将符号也数码化即 正的符号 用0表示负的符号 用1表示 计算机中的数表示方法是 符号位 二进制数值 以8bit为例 109 1101101 01101101 109 1101101 11101101 17 问题 计算机计算复杂化 例如计算 19 22 10010011 00010110 解决的方法是 使用补码的表示方法能将减法一律转换为加法 需要判断符号是否相同 如果相同 结果符号不变 并进行绝对值相加如果不同 结果取绝对值大的数的符号 并进行绝对值相减 18 整型数据的类型及规定 方括号表示可选项short分配2Byte int long分配4Byte 19 说明1 有符号和无符号整型数据 有符号的整型数据signedshort无符号的整型数据unsignedshort区别是将最高位看作符号位还是数据位 例如 1111111110101000作为有符号数使用时 最高为符号位为负数 值是 88 再求一次补 作为无符号数使用时 最高为数据位为无符号的数 值是 65448 20 例如 main unsignedshortintm m 65448 printf nm d n m printf m u n m cout m shortint m endl 输出结果 m 65448m 6544865448 88 按有符号数输出 按无符号数输出 21 说明2 整数溢出问题 超出范围 系统为short型数分配的存储空间为 16bit 2Byte 215 1 32767 0111111111111111 1000000000000000 问题 上数再加1是多少 215 32768 表示范围 32768 32767 使用中注意数的范围 有符号short型整数的最大值 有符号short型整数的最小值 22 例如 voidmain shortinta b a 32767 b a 1 printf a d nb d n a b 输出结果 a m 32767 32768 23 2 2 2实型数据 1 实型数据的类型单精度实型数据float 分配4Byte双精度实型数据double 分配8Byte2 实型数据的存储 单精度实型 指数部分 小数部分 小数的符号位 指数的符号位 24 实型数据的类型及规定 C标准并未具体规定各种实型数据所占字节数 也不规定具体小数和指数部分的位数 一般而言 小数部分位数多 数据表示的有效数字多 精度就高 而指数部分位数多 则表示的数据范围更大 有效数字的意义 25 例如 voidmain floatx 12345 54321 doubley 445566778899 987654321 printf x f ny f n a b 输出结果 x y 有效数字的具体含义 12345 542969 445566778899 987670 26 2 1 3字符型数据 字符型数据char 分配1Byte字符型数据是指字母 数字 各种符号等用ASCII值表示的字符例如 a 是一个char类型数据 称作字符常量 存储 01100001 最高位为0 27 2 1 4空类型 void 通常与指针或函数结合使用eg voidmain 28 2 3常量 变量 主要内容 常量变量 29 2 3 1常量 在运行程序的过程中值保持不变的量1 整型常量十进制 0 9八进制 0 7 以0开头十六进制 0 9 A F a f 以0 x或0X开头 例如 100 80 12301002401000730 x380 x100X100XFF0 x0a 30 1 整型常量 注意 十六进制常量中可以使用大写字母A F 也可以使用小写字母a f 八进制常量中不能出现数字8或9例如 018 0921非法 可以表示成8进制 10进制和16进制 31 说明 整型常量的类型 根据值大小默认类型 inta 5 longa 5 shortb 32768 32 说明 整型常量的类型 整型常量后面加l或L 则认为是longint型例如 123L 0L 432l 0 x100l整型常量后面加u或U 则认为是unsigned型例如 15u 234u 017u 0123u0 xFu 0 xACu15Lu 543Lu 33 2 实型常量 十进制形式1 01 12 0 12 00 0指数形式1e31 8e 3 123E 6 1E 3 指数只能是整数 而尾数则可以是整数也可以是小数 无论指数或尾数均不能省略例如 1e E 5 E 3非法实型常量的类型 默认为double型 后面加F 或f 则强调表示该数是float类型例如 3 5f 1e2F 34 3 字符型常量 可视字符常量单引号括起来的单个可视字符例如 a A 3 等转义字符常量单引号括起来的 与可视字符组合 例如 例ex2 4 35 4 字符串常量 用双引号括起的一个字符序列例如 ABC 123 a n t nGoodmorning 字符串常量的长度 所包含的字符个数字符串常量的存储方式 所占存储单元数 串长度 1例如 字符串结束标记 36 说明字符串常量与字符常量 37 5 符号常量 以标识符来代表的常量事先编译预处理命令define定义编译时先由系统替换为它所代表的常量 再进行编译例如 defineLEN2 5main floata b a 2 3 14 LEN b 3 14 LEN LEN printf a f b f n a b 编译前系统进行替换 38 5 符号常量 main floata b a 2 3 14 2 5 b 3 14 2 5 2 5 printf a f b f n a b define是编译预处理命令 必须以 开头编译预处理命令在后续章节会继续讨论 替换为 39 2 3 2变量 1 变量的有关概念在程序运行过程中 其值改变的数据 称为变量 变量用标识符表示 称为变量名 变量必须 先定义后使用 系统为变量分配存储单元 存储变量的值 编写程序时通过变量名来存 取变量值 例如 有变量a它的值是510 40 2 变量定义 变量定义的一般格式 数据类型说明符变量列表 例如 inti j longk m floatx y charch1 ch2 变量名 必须使用合法的标识符作变量名不能使用关键字为变量命名 多个变量之间用 分隔变量必须先定义后使用 41 说明 变量定义注意事项 多个变量之间用 分隔变量必须先定义后使用 inti j i j 1 inti intj inta b 10 42 3 变量的初始化 允许在说明变量的时候对变量赋初值 例如 inta 5 b 10 2 doublex 23 568 y charch1 a ch2 66 ch3 142 表示定义变量并对变量存储单元赋值 错误的初始化 inta 3 b b 5 floatm n 23 16 43 2 4运算符和表达式 主要内容 算术运算符和算术表达式赋值运算符和赋值表达式关系运算符和关系表达式逻辑运算符和逻辑表达式位运算符和位运算表达式条件运算符和条件表达式逗号运算符和逗号表达式其他运算符及其运算 44 运算符的有关概念 作用 对运算对象完成规定的操作运算类型 按运算对象分 单目 双目 三目按功能分 算术 赋值 关系 逻辑条件 逗号 位 其他 45 运算符的优先级和结合性 优先级指各种运算符号的运算优先顺序例如 算术运算优先于关系运算算术运算中先 后 结合性指运算符号和运算对象的结合方向分为 从左向右 左结合 和从右向左 右结合 例如 算术运算符为左结合a b 4赋值运算符为右结合a b 5 C语言规定见教材附录 46 本章涉及的运算符 sizeof 数据类型标识符 47 表达式的有关概念 什么是表达式由运算符将运算对象连接成的式子 它描述了一个具体的求值运算过程 计算表达式的值按照运算符的运算规则求值求值时注意运算符的优先级和结合性表达式值的类型自动转换强制转换 48 算术运算 算术运算符的优先级 没有乘方运算符 要计算a3要写作a a a的连乘 或用标准库函数pow a 3 的运算对象可为各种类型数据 但是当进行两个整型数据相除时 运算结果也是整型数据 要求运算对象必须是整型数据 功能是求两数相除的余数 余数的符号与被除数的符号相同 例ex2 8 49 自增自减运算 是单目运算符有前缀和后缀两种形式前缀形式 先自增 自减 再引用 后缀形式 先引用再自增 自减 功能 前缀形式 a等价于a a 1 a等价于a a 1后缀形式a 等价于a a 1a 等价于a a 1 表达式的值会不同 50 例如 当a 5时 a表达式的值为6 且a 6 a 表达式的值为5 且a 6 b a等价于a a 1 b a表达式的值为6 且a 6 b 6 b a 等价于b a a a 1表达式的值为5 且a 6 b 5 例ex2 9 51 说明 和 的运算对象只能是变量 或运算结果是变量的表达式 不能是常量 或运算结果是数值的表达式 例如 5 a 2 不合法 具有右结合性 结合方向为从右到左 例如 a 等价于 a 如果有多个运算符连续出现时 C系统尽可能多的从左到右将字符组合成一个运算符例如 i j等价于 i j i j等价于 i j 例ex2 8 52 赋值运算 赋值运算符 右结合 赋值表达式将表达式的值存入变量对应的内存单元中m 12b a 2m 3 n等价于m m 3 n x x 5 53 说明 赋值号左边必须是变量 右边可以是C语言任意合法的表达式例如 n t 210等价于 a b b c 10 赋值号与数学中的等号含义不同例如 数学中a b等价于b aC语言中a b不等价于b a 54 赋值表达式的转换规则 实型赋给整型变量整数部分赋给整型变量 舍去小数部分intx x 6 89 后x 整型赋给实型例如 floatx x 6 后x 赋值号与数学中的等号含义不同例如 数学中a b等价于b aC语言中a b不等价于b a 6 6 0 根据左值确定表达式的类型 右边精度高 会丢失一部分数据 55 关系运算 关系运算符 左结合 c等价于a b c 与 a b c不等价关系运算符优先于赋值 低于算术 56 说明 关系运算的结果应该是逻辑值 C语言用数值用1表示逻辑真 0表示逻辑假例如 7 5的值是1 5 7的值是0 a b 的值是0 a b 的值是1即关系表达式的值 0或1关系运算符两边的运算对象的数据类型不同时 系统自动转换成相同数据类型后再进行运算 转换规则后面介绍 57 说明 关系表达式中含有多个关系运算符时 注意与数学式的区别例如 6 x 0数学式 表示x的值在0到6之间关系表达式 表示6与x的比较结果 0或1 再与0比较实型数可进行大于或小于比较 但通常不进行 或 的关系运算floatx y x y 1 25 fabs x y 1e 5 58 逻辑运算符 逻辑运算符 逻辑运算符的运算规则 59 逻辑表达式 逻辑表达式用逻辑运算符将运算对象连接成的式子例如 0 b a b c da b 5 c 4 x y z逻辑运算符的优先级和结合性 是单目运算符 右结合 高于算术 和 是双目运算符 左结合 高于赋值运算符 低于关系运算符 60 逻辑运算规则 从左到右依次进行逻辑计算运算对象为非0表示逻辑真运算对象为0表示逻辑假逻辑运算的结果为0或1例如设 a 15 b 0 c 2a b c结果为0a b c结果为1 a c b c结果为1 61 逻辑运算规则 续 运算按照从左至右的顺序进行 一旦能够确定逻辑表达式的值 就立即结束运算 逻辑运算的短路性质例如设 a 1 b 0 c 2a b c a b c 为0 运算终止 表达式值为0 为非0 运算终止 表达式值为1且a为2 b为0 c为 2 b c保持原值 62 关系与逻辑运算符的应用 表示数学公式a b c判断a b c三条线段能否组成一个三角形a b不同时为负 a b c a c b b c a a 0 b 0 a 0 a 0 b 0 b 0 a b b c 63 位运算 有兴趣自学不要求 64 条件运算符和条件表达式 条件运算符 条件表达式的一般形式表达式1 表达式2 表达式3例如 m 10 b 20 a bx 3 a 5 100 200 C语言中唯一的三目运算符 要正确区分用 和 分隔的表达式涉及条件运算符的优先级与结合性 65 条件运算符优先级 条件运算符优先级高于赋值 逗号运算符 低于其他运算符例如 m 10 b 20 a b x 3 a 5 100 200 等价于 m n x a 3 等价于 a 10 b 20 a b 等价于 x 3 a 5 100 200 66 条件运算符的结合性 条件运算符具有右结合性当一个表达式中出现多个条件运算符时 应该将位于最右边的问号与离它最近的冒号配对 并按这一原则正确区分各条件运算符的运算对象 例如 w x x w x y x y与w x x w x y x y 等价与 w x x w x y x y不等价 67 逗号表达式运算 逗号表达式的一般形式表达式1 表达式2 表达式n逗号表达式的值从左向右 依次对表达式求值 最后得到表达式n的值就是逗号表达式的值 例如 a 5 a a 3表达式值为18 且a 6 t 1 t 5 t 表达式值为1 且t 2 x a 3 5 a 4 赋值表达式的值为60 且x 60 a 15 例ex2 11 68 取地址运算符 为单目运算符运算对象只能是变量运算结果是变量的存储地址例如有定义 inta student charch 可以对变量a ch student进行 69 长度运算符sizeof 为单目运算符运算对象只能是变量名或数据类型标识符运算结果为该变量或该数据类型的长度 main inta 5 doublex printf d d sizeof int sizeof a printf d d sizeof double sizeof x printf d d n sizeof float sizeof char 输出结果 448841 70 2 5数据类型转换 25 48 5 A 3 56e 3是合法的表达式吗 是不同类型的操作数 表达式如何计算 类型转换自动类型转换 强制类型转换 71 自动将精度低 表示范围小的运算对象类型向精度高 表示范围大的运算对象类型转换 2 5 1数据类型的自动转换 转换原则 例如有定义 inta charch 表达式 a ch 2 35La ch 2 35 72 赋值运算中的类型转换 小数部分自动补0 自动舍去实型表达式的小数部分 注意不进行四舍五入 自动截取表达式值的低字节赋值 舍去高字节 自动给高字节补0或补1 73 2 5 2数据类型的强制转换 强制转换的一般形式 类型名 表达式例如 int b 3 x 31 f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论