C语言第三章变量名、数据类型、运算符和表达式.ppt

上传人:max****ui 文档编号:6334648 上传时间:2020-02-23 格式:PPT 页数:75 大小:812.81KB
返回 下载 相关 举报
C语言第三章变量名、数据类型、运算符和表达式.ppt_第1页
第1页 / 共75页
C语言第三章变量名、数据类型、运算符和表达式.ppt_第2页
第2页 / 共75页
C语言第三章变量名、数据类型、运算符和表达式.ppt_第3页
第3页 / 共75页
点击查看更多>>
资源描述
2020 2 23 主讲教师 四川大学计算机学院陈良银 1 主讲教师 个人主页 C语言程序设计 C99版 四川大学计算机学院 四川大学计算机学院 2020 2 23 主讲教师 四川大学计算机学院陈良银 2 教材 C语言程序设计 C99版 陈良银游洪跃李旭伟主编李志蜀唐宁九李涛主审清华大学出版社2006年9月出版 2020 2 23 主讲教师 四川大学计算机学院陈良银 3 本书内容 第1章基础知识第2章C语言的基本要素第3章变量名 数据类型 运算符和表达式第4章C程序基本控制结构第5章函数第6章数组和指针第7章递归第8章结构 联合 位运算和枚举类型第9章预处理命令第10章文件第11章高级话题第12章C89VsC99实验 待安排 2020 2 23 主讲教师 四川大学计算机学院陈良银 4 常量类型 本章主要内容 ARMVectorTable FIQ IRQ Reserved DataAbort PrefetchAbort SoftwareInterrupt UndefinedInstruction Reset 1 3 2 基本数据类型 C语言的变量命名 4 变量类型 5 表达式 运算符及其优先级 6 求值顺序 类型转换 2020 2 23 主讲教师 四川大学计算机学院陈良银 5 本章的节本要求 本变量定义部分定义了程序中可能用到的变量 以及变量的数据类型 变量的名字 甚至还可能设定了变量的初值 而变量的数据类型则表明了变量在内存中所占据的内存单元字节数 其取值范围 以及可以作用于该变量的运算符 C程序运算符限定了参与运算的操作数类型 以及程序对参与运算的操作数所作的操作 表达式则用运算符将变量 常量和函数名等连接起来 以产生一个新的值 表达式都是有值的 即表达式运算的结果 这些概念性的问题是本章的主题 2020 2 23 主讲教师 四川大学计算机学院陈良银 6 3 1C语言的变量命名 C程序操作的基本对象是变量和常量 变量名可由C语言字符集根据相关规则组合而成 语言字符包括字母 含 数字 空格 标点和特殊字符等 字母 大 小写字母a z各26个 数字 0 9共10个 键盘符号 键盘上所使用的各种符号 共33个 转移字符 转移字符由 反斜杠字符 开始后跟单个字符或若干字符组成 何为变量名 2020 2 23 主讲教师 四川大学计算机学院陈良银 7 空白符 空格符 制表符 换行符等统称为空白符 空白符只在字符常量和字符串常量中起作用 在其它地方出现时 只起间隔作用 程序编译时对它们忽略不计 空白符的作用 2020 2 23 主讲教师 四川大学计算机学院陈良银 8 3 1 2关键字 关键字是由 语言规定的具有特定意义的单词 也称为保留字 关键字不可作用变量名 2020 2 23 主讲教师 四川大学计算机学院陈良银 9 表3 1C语言的关键字 最后一行是C99增加的5个 2020 2 23 主讲教师 四川大学计算机学院陈良银 10 3 1 3变量命名 第一原则 变量的名字 变量名也是标识符 只能由字母和数字组成 且变量名的第一个字符必须是字母 第二原则 尽量不要使用下划线作为变量的第一个字母 因为许多系统库函数常常使用下划线作为库函数命名的首字母 第三原则 见名知意 也就是名字要能够表达其意义 这是变量命名的又一基本要求 名字自含性 2020 2 23 主讲教师 四川大学计算机学院陈良银 11 3 2C语言的基本数据类型及其大小 C89有5种基本数据类型 char 字符型 int 整型 float 浮点型 double 双精度型 void 空类型 在C99中还增加了以下三种基本类型 Bool Complex Imagimary float和double的精确格式依赖于系统的具体实现 但是标准C规定了其最小表示范围是1E 37到1E 37 2020 2 23 主讲教师 四川大学计算机学院陈良银 12 基本类型可用以下修饰词修饰 signed 有符号类型 unsigned 无符号类型 long 长整型 short 短整型 longlong 长长整型 仅C99 int缺省是signed的 而char缺省一般是unsigned的 longlong仅C99具有 2020 2 23 主讲教师 四川大学计算机学院陈良银 13 C语言的基本数据类型 2020 2 23 主讲教师 四川大学计算机学院陈良银 14 3 3常量及其类型 每一种基本类型都有常量 常量就是其值保持不变的量 在C语言中的数值常量 在编译时一般会处理为机器指令的一部分 所以它不会在动态数据存储区占据位置 它位于程序区 有的系统 也将部分常量分配到静态数据存储区中 比如字符串常量 一般就分配在静态数据存储区 常量可能位于程序区 2020 2 23 主讲教师 四川大学计算机学院陈良银 15 常量可以独立使用 也可以用于表达式 这样的表达式可以在编译期间求值 而不是在运行期间求值 常量表达式可用于常量能够出现的任何地方 比如 defineMAXLINE1000 定义了一个宏 宏名代表字符串1000 charlongest MAXLINE 1 用常量表达式定义了一个数组 实际上是1000 1 2020 2 23 主讲教师 四川大学计算机学院陈良银 16 3 3 1字符常量 字符常量就是其值保持不变的字符 它实际就是一个整数 在书写时用单引号括起来 比如 A 最常用的就是ASCII编码字符集 有些字符可以用字符和字符串通过转义字符来表示 比如 n 换行 一个字节大小的任意字符都可以通过 ddd 来表示 这里的ddd是1 3位八进制数字 0 7 或者通过 xhh 来表示 这里hh是1 2位十六进制数字 0 9 a f A F 101 X41 2020 2 23 主讲教师 四川大学计算机学院陈良银 17 表3 3常用的转义字符及其含义 2020 2 23 主讲教师 四川大学计算机学院陈良银 18 3 3 2整型常量 象1234这样的整数是常量 而且是一个int型 整型 常量 常量的数据类型通过其书写形式来区分 一个long型常量在书写时以l或者L结尾 比如 1234L 无符号整型常量在书写形式上结尾带有u或U 而后缀为ul或者UL的常量则是一个无符号长整型 unsignedlong 常量 整型常量可以用十进制 八进制或者十六进制表示 以貌取人 2020 2 23 主讲教师 四川大学计算机学院陈良银 19 以0 零 开头的整型常量是八进制表示 以0 x或者0X开头的整型常量是十六进制表示 比如 十进制30可以表示为0 x1e或者0X1E 十六进制 其余的为10进制常量 比如 123 345等 012 0101 01A7 对吗 2020 2 23 主讲教师 四川大学计算机学院陈良银 20 图3 2整型常量0XFUL在内存中的表示 X F U L分别表示什么意思 2020 2 23 主讲教师 四川大学计算机学院陈良银 21 3 3 3实型常量 浮点型常量包含了一个小数点 比如 123 4 或者一个指数 比如 1e 2 或者既包含小数点又包含指数 1 2e 3 没有后缀的浮点型常量都是double类型 浮点常量自动是double型 浮点型变量也是吗 2020 2 23 主讲教师 四川大学计算机学院陈良银 22 3 3 4字符串常量 字符串常量是用双引号括起来的零个或者多个字符序列 通常简称为字符串 比如 Iamastudent 空字符串 四川大学国家级示范性计算机 软件 学院 末尾有 0哟 2020 2 23 主讲教师 四川大学计算机学院陈良银 23 hello world 连接时将双引号之间的空格舍弃 等价于 hello world 自动连接 很有用哟 2020 2 23 主讲教师 四川大学计算机学院陈良银 24 例题3 1求字符串的长度 intStrLen chars inti 0 while s i 0 i returni 在标准库函数中有求字符串长度的函数 strlen 2020 2 23 主讲教师 四川大学计算机学院陈良银 25 图3 3字符串内存单元的操作过程及其表示 2020 2 23 主讲教师 四川大学计算机学院陈良银 26 图3 4字符串常量和字符常量的内存分配 为何多这 0呀 有必要吗 2020 2 23 主讲教师 四川大学计算机学院陈良银 27 3 3 5枚举常量 还有一种常量叫做枚举常量 enumerationconstant 枚举常量是关于常量整数值的一个列表 也叫枚举元素 它是在定义枚举类型时所罗列的一些符号 比如 enumboolean false true 2020 2 23 主讲教师 四川大学计算机学院陈良银 28 3 3 6使用const限定的常量 在变量定义时 可以使用const限定词将其限定为常量 可以认为使用const修饰的量是一个常量 而使用 define定义的只是一个宏名 所以const限定词会增加程序的安全性 constdoublePI 3 1415926535897932384626433832795028841971693993751058209749445923 constcharCUE PleaseInputaword 有名字 有类型 在数据区 2020 2 23 主讲教师 四川大学计算机学院陈良银 29 const限制表示函数中不可以修改数组s中的内容 intStrLen constchars inti 0 while s i 0 i returni 表示s数组中的内容不可变 2020 2 23 主讲教师 四川大学计算机学院陈良银 30 与const相对应的还有volatile限定词 volatile限定词告诉编译器 变量的值可能会被程序以外的不确定因素修改 比如 操作系统的时钟程序可能通过一个外部变量来保持系统时间 随时可能被修改 对它 变量未写 其值不变 的假定是错误的 2020 2 23 主讲教师 四川大学计算机学院陈良银 31 3 4变量类型及其定义 C语言的所有变量在使用以前都必须定义 变量定义语句规定了变量的数据类型 从而也限定了变量的可能取值范围 inttop bottom step charch cArray 100 必须先定义 后使用 2020 2 23 主讲教师 四川大学计算机学院陈良银 32 3 4 1基本数据类型变量及其定义 1 字符类型变量及其定义charch unsignedcharch2 signedcharch3 char代表字符数据类型 其定义的ch就是一个字符数据类型变量 在内存中只占1个字节 可以保存1个字符 1字节 8位 2020 2 23 主讲教师 四川大学计算机学院陈良银 33 图3 5char型变量的表示范围 最高位是符号位 其余数值位 2020 2 23 主讲教师 四川大学计算机学院陈良银 34 2 整型类型变量及其定义 inti int表示整型数据类型 i是整型变量 在内存中可能占据2个字节也可能占据4个字节 随编译环境不同而异 shortintsCount intiCount longintlCount TC中2字节 VC 中4字节 2020 2 23 主讲教师 四川大学计算机学院陈良银 35 图3 6short型和long型变量 标准C规定 short 16位 long 32位 2020 2 23 主讲教师 四川大学计算机学院陈良银 36 3 实型类型变量及其定义 实型数据分为float单精度实型 double双精度实型和longdouble长双精度实型 float 单精度浮点型数据 在内存中占据4个字节 double 双精度浮点型数据 在内存中占据8个字节 longdouble 长双精度实型 扩展双精度实型 变量 占据80位 10个字节 2020 2 23 主讲教师 四川大学计算机学院陈良银 37 3 4 2变量的初始化 变量也可以在定义它时初始化 在定义变量时 如果在变量名后面跟上赋值符号 和表达式 也叫初始化算子 那么就表示在定义变量的同时给它赋了一个初始值 比如 charch n inti 0 intiCount MAXLINE 1 floatf 1 19e 5 定义时赋值 2020 2 23 主讲教师 四川大学计算机学院陈良银 38 3 5运算符和表达式 3 5 1表达式和表达式的值表达式由数据和运算符构成 数据可以是变量 常量和函数返回值 a b c c c 5 整个表达式的意义 但c c 可行吗 有待探索 2020 2 23 主讲教师 四川大学计算机学院陈良银 39 3 5 2赋值运算符 赋值表达式和赋值语句 是赋值运算符 它的意思是将右边表达式的值赋值给左边变量 号左边只能是变量 不能是表达式或常量 而等号右边可以是表达式 也可以是变量或常量 所谓语句就是一个能够表达完整意思的句子结构 要注意C语言的 赋值运算符 与数学方程中的 等于 的意义是完全不同的 2020 2 23 主讲教师 四川大学计算机学院陈良银 40 3 5 3算术运算符及其表达式 算术运算符包括一元运算符和二元运算符两种 二元算术运算符有 整除 和 取余 模运算符 一元算术运算符有 和 等 运算符可以作用于整型数据也可以作用于实型数据 例题3 2算术运算符及其运算结果 意义不同 2020 2 23 主讲教师 四川大学计算机学院陈良银 41 i 1 c1 A e2 2 f 10 2 i i c1 i 1 printf d n i 输出1 i c1 e2 i 32 因为c1 65 e2 2 printf d n i 输出32 f 100 f 将100转换为100 0再除以10 2 printf f n f 输出9 803922 i c1 2 i 1 i f i 出错 实型数据不能用于 printf d n i 输出1 f 3 2 算术表达式3 2的值为1 1赋值给f转换为1 0 printf f n f 输出1 000000 2020 2 23 主讲教师 四川大学计算机学院陈良银 42 例题3 3判断闰年和非闰年 if year 4 0 判断闰年 2020 2 23 主讲教师 四川大学计算机学院陈良银 43 3 5 4自增和自减算术运算符及其表达式 if ch n iCount iCount自增1 或者i iCount 在这里前缀 后缀自增均可 2020 2 23 主讲教师 四川大学计算机学院陈良银 44 例题3 4隐藏从键盘输入的密码串中的所有数字 以 取代每一个数字 if s i 0 数字变 号 其余不变 2020 2 23 主讲教师 四川大学计算机学院陈良银 45 if s i 0 效果同前 2020 2 23 主讲教师 四川大学计算机学院陈良银 46 数字被 号取代 2020 2 23 主讲教师 四川大学计算机学院陈良银 47 例题3 5自定义StrCat函数 连接两字符串 StrCat 将source连接到target末尾 target必须足够大 voidStrCat chartarget constcharsource inti j 0 for i 0 target i 0 i 空语句 while target i source j 0 空语句 寻找 0 0退出 2020 2 23 主讲教师 四川大学计算机学院陈良银 48 图3 8StrCat 的操作过程 首字母复制位置 2020 2 23 主讲教师 四川大学计算机学院陈良银 49 3 5 5关系运算符及其表达式 大于 大于等于 小于 小于等于 以及 等于 不等于 关系运算符的优先级比算术运算符的优先级低 i maxLine 1等价于i maxLine 1 2020 2 23 主讲教师 四川大学计算机学院陈良银 50 3 5 6逻辑运算符及其表达式 2020 2 23 主讲教师 四川大学计算机学院陈良银 51 逻辑运算符 是非运算符 它是一元运算符 它将非0操作数转换为0 而将0操作数转换为1 逻辑运算符 在if结构中使用较多 if valid 它也可以如下使用 二者等价 if valid 0 广泛使用形式 2020 2 23 主讲教师 四川大学计算机学院陈良银 52 3 5 7逗号运算符及其表达式 其功能是把两个表达式连接起来组成一个表达式 称为逗号表达式 其一般形式为 表达式1 表达式2inti 0 j 0 k 0 k i j i j i i 2 j 2 k 2 表达式的值是3 注意 比 优先级高 有求值顺序 2020 2 23 主讲教师 四川大学计算机学院陈良银 53 3 5 8条件运算符及其表达式 条件运算符为 它是C语言中唯一的一个三元运算符 三目运算符 由条件运算符组成条件表达式的一般形式为 表达式1 表达式2 表达式3expr1 expr2 expr3 有求值顺序 2020 2 23 主讲教师 四川大学计算机学院陈良银 54 1 条件运算符的运算优先级低于关系运算符和算术运算符 但高于赋值运算符 2 条件运算符 是一对运算符 不能分开单独使用 3 条件运算符的结合方向是自右至左 x y x y z y z等价于 x y x y z y z 2020 2 23 主讲教师 四川大学计算机学院陈良银 55 3 5 9位运算符及其表达式 按位与操作AND 按位或操作OR 按位异或操作OR 按位右移操作 按位取反 一元运算符 其余位运算符均为二目运算符 2020 2 23 主讲教师 四川大学计算机学院陈良银 56 图3 9位运算符的作用 2020 2 23 主讲教师 四川大学计算机学院陈良银 57 图3 10C语言逻辑运算符 与位运算符 的不同 2020 2 23 主讲教师 四川大学计算机学院陈良银 58 2020 2 23 主讲教师 四川大学计算机学院陈良银 59 图3 11C语言的异或运算 2020 2 23 主讲教师 四川大学计算机学院陈良银 60 图3 12C语言的左移 右移运算符 2020 2 23 主讲教师 四川大学计算机学院陈良银 61 图3 13C语言的按位取反运算符 运算符在编制可移植性程序时 用处较大 0 xffff 2020 2 23 主讲教师 四川大学计算机学院陈良银 62 例题3 6位运算符的作用 2020 2 23 主讲教师 四川大学计算机学院陈良银 63 3 5 10复合赋值运算符及其表达式 还有一种赋值运算符 叫做复合赋值运算符 象上述i i 4这样的表达式 其左边的变量立即在右边重复 可以写成压缩的形式 i 4这里 也视为一种运算符 它叫做复合赋值运算符 适用于大部分运算符 2020 2 23 主讲教师 四川大学计算机学院陈良银 64 假设variable是变量 而expression是表达式 则复合赋值运算符表达式如下 variableop expression 注意 variable不可是表达式 只能是变量 它等价于 variable variableop expression 注意这里的 2020 2 23 主讲教师 四川大学计算机学院陈良银 65 例题3 7计算从键盘输入的实数中正数的个数 intIsNegative floatx if fabs x 0 1 1 如何判断实数与0的关系 2020 2 23 主讲教师 四川大学计算机学院陈良银 66 iArray iArray i3 i4 iArray i1 2iArray iArray i3 i4 iArray i1 iArray iArray i3 i4 iArray i1 2 符合赋值运算符的存在意义 2020 2 23 主讲教师 四川大学计算机学院陈良银 67 3 6运算符的优先级和求值顺序 多数运算符具有左结合性 一元运算符 三目运算符 赋值运算符等具有右结合性 运算符的求值顺序 优先级 结合性是完全不同的三个概念 2020 2 23 主讲教师 四川大学计算机学院陈良银 68 2020 2 23 主讲教师 四川大学计算机学院陈良银 69 x Func1 Func2 错误的表达式 x Func1 i Func2 i a i i C语言并未规定 的求值顺序 2020 2 23 主讲教师 四川大学计算机学院陈良银 70 3 7类型转换 C语言的类型转换规则 自动转换时是低类型向高类型转换 而强制转换也可以将高类型转换为低类型 但可能造成信息丢失 例题3 8将整型转换为反转数字字符串输出 何为低类型 高类型 2020 2 23 主讲教师 四川大学计算机学院陈良银 71 voidItoaRevers longl charstr intiResidue i for i 0 l 0 i iResidue l 10 str i char iResidue 0 l l 10 str i 0 强制类型转换 2020 2 23 主讲教师 四川大学计算机学院陈良银 72 例题3 9将小写字母转换为大写字母 intToUpper intc if c a a A 的物理意义 2020 2 23 主讲教师 四川大学计算机学院陈良银 73 自动类型转换规则如下 8 如果其中一个操作数为longdouble 则将另一个操作数转换为longdouble 如果其中一个操作数为double 则将另一个操作数转换为double 如果其中一个操作数为float 则将另一个操作数转换为float char和short应转换为int才参与运算 不过 如果其中任何一个操作数为long 则将另外一个转换为long 2020 2 23 主讲教师 四川大学计算机学院陈良银 74 与C89完全不同 2020 2 23 主讲教师 四川大学计算机学院陈良银 75 Thanks TheEnd
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!