第三章_数据类型、运算符、表达式.ppt_第1页
第三章_数据类型、运算符、表达式.ppt_第2页
第三章_数据类型、运算符、表达式.ppt_第3页
第三章_数据类型、运算符、表达式.ppt_第4页
第三章_数据类型、运算符、表达式.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计 主讲 王鑫便663195 第三章数据类型运算符与表达式 内容提要C语言的基本元素常量和变量的概念各种数据类型的常量及变量变量赋初值不同类型数据间的混合运算几种基本运算符及其表达式 程序 指令 C语言中的基本元素 标识符关键字常量运算符分隔符等 3 1C语言的基本元素 C语言使用的基本符号共有如下五种 大写字母 A Z小写字母 a z阿拉伯数字 0 9下划线 标点符号和运算符 3 1 1符号集 字符集 3 1C语言的基本元素 标识符 用来标记常量 变量 函数及文件名字的字符序列 标识符的构成规则 以字母 大小写皆可 或下划线开头随后可跟若干个 包括0个 字母 数字 下划线标识符的长度各个系统不同 最好不要超过8个字符如 xy3 imaxElseX to B 合法 如 7xint Nobadonere input 不合法 注意 区分大小写 如 sum Sum SUM 表示不同的标识符 3 1 2标识符 关键字也称 保留字 它是C语言中具有特定含义 专门用作语言特定成分的一类标识符 ANSI推荐的C语言的关键字有32个 Turbo另扩展了11个 如 main int char float define等 注意所有的关键字都有固定的意义 不能用作其它所有的关键字必须小写如 else与Else表示不同的含义 else是关键字 Else是用户定义的标识符 3 1C语言的基本元素 3 1 3关键字 3 2C的数据类型 数据是操作的对象 数据类型是指数据的内在表现形式 代码 存储 运算 C的数据类型如下 3 3常量和变量 常量在执行过程中其值不能被改变的量常量区分为不同类型 表示形式 如 12 3 2 a 符号常量用一个标识符代表的一个常量定义方法 define标识符常量如 例3 1 例3 1 definePRICE30voidmain intnum total num 10 total num PRICE printf total d total total 300 3 3 1常量和符号常量 3 3常量和变量 变量其值可以改变的量 它用标识符 变量名 来表示 在内存中占据一定的存储单元 变量的定义类型符标识符注意事项见名之意先定义后引用习惯上 符号常量名用大写 变量名用小写 以示区别 例3 1 definePRICE30voidmain intnum total num 10 total num PRICE printf total d total 如 inti j imax charc1 c2 s floatx root1 root2 doubley1 y2 3 3 2变量 变量命名 在C语言中 变量命名需要遵循一定的规则 有效名称 principal cost price marks 3 lastname city 无效名称 123rate currency discount zipcode 变量的命名规则 变量名可以由字母 数字和 下划线 组合而成变量名不能包含除 以外的任何特殊字符 如 逗号 空格等变量名必须以字母或 下划线 开头变量名不能包含空白字符 换行符 空格和制表符称为空白字符 C语言中的某些词 例如int和float等 称为保留字 具有特殊意义 不能用作变量名C语言区分大小写 因此变量price与变量PRICE是两个不同的变量 变量 程序 编写程序时 常常需要将数据存储在内存中 方便后面使用这个数据或者修改这个数据的值 通常使用变量来存储数据 使用变量可以引用存储在内存中的数据 并随时根据需要显示数据或执行数据操纵 存储Rate Rate 5 将值存储为DiscAmt Rate DiscAmt 10 0 5 将值存储为Result 9 5 C语言的基本数据类型 数据属于不同类别 Africa Thequickbrownfox TRUE 数据 非数值 数值 整型 非整型 9002 12 999 9 12 2003 2 175 123 JackieChan char 数据类型 非数值 数值 整型 int shortint longint double float 非整型 3 4整型数据 整型常量即整常数 C中整常数可以有三种表示形式 即十进制整数 八进制整数和十六进制整数 计算机中数的表示及进制转换数码 基和权数码 表示数的符号基 表示数码的个数权 表示每个位所具有的值数制二进制八进制十进制十六进制 3 4 1整型常量 3 4整型数据 计算机中数的表示及进制转换数码 基和权数制 数据在内存中是以二进制形式存放的 二进制由数字0和1组成 如 00001010八进制以数字0开头的数 由数字0 7组成 如 0123 123 8十进制一串连续的数字表示 最高位非零 如 123 34 0十六进制以0 x开头的数 由0 9 a f A F 组成 如 0 x123 123 16 3 4 1整型常量 判断 32767 32768 0 010 011 016 018 0 x10 0 xde 0 xf 3 4整型数据 计算机中数的表示及进制转换各种进制之间的转换二进制 八进制 十六进制转换成十进制方法 按权相加 3 4 1整型常量 例 3 4整型数据 3 4 1整型常量 计算机中数的表示及进制转换各种进制之间的转换二进制 八进制 十六进制转换成十进制方法 按权相加 十进制转换成二进制 八进制 十进制方法 连续除以基 从低到高记录余数 直至商为0 3 4整型数据 3 4 1整型常量 计算机中数的表示及进制转换 例1 把十进制数59转换成二进制数 例2 把十进制数159转换成八进制数 例3 把十进制数459转换成十六进制数 3 4整型数据 3 4 1整型常量 计算机中数的表示及进制转换各种进制之间的转换二进制 八进制 十六进制转换成十进制十进制转换成二进制 八进制 十进制二进制与八进制间的转换二进制转换成八进制 方法 从右向左 每3位一组 不足3位左补0 转换为八进制八进制转换成二进制 方法 用3位二进制数代替每一位八进制数 例 1101001 2 001 101 001 2 151 8 例 246 8 010 100 110 2 10100110 2 000 0001 1010 2011 3100 4101 5110 6111 7 3 4整型数据 3 4 1整型常量 计算机中数的表示及进制转换各种进制之间的转换二进制 八进制 十六进制转换成十进制十进制转换成二进制 八进制 十进制二进制与八进制间的转换二进制与十六进制间的转换二进制转换成十六进制方法 从右向左 每4位一组 不足4位左补0 转换成十六进制十六进制转换成二进制方法 十六进制转换成二进制 用4位二进制数代替每一位十六进制数 例 11010101111101 2 0011 0101 0111 1101 2 357D 16 例 4B9E 16 0100 1011 1001 1110 2 100101110011110 2 0000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 F 3 4整型数据 3 4 1整型常量 计算机中数的表示及进制转换字节和位内存以字节为单元组成每个字节有一个地址一个字节一般由8个二进制位组成每个二进位的值是0或1 3 4整型数据 3 4 1整型常量 计算机中数的表示及进制转换字节和位数值的表示方法 原码 反码和补码原码最高位为符号位 其余各位为数值本身的绝对值反码正数 反码与原码相同负数 符号位为1 其余位对原码取反补码正数 原码 反码 补码相同负数 最高位为1 其余位为原码取反 再对整个数加1 3 4整型数据 3 4 1整型常量 负数补码转换成十进制数 最高位不动 其余位取反加1 例 补码 11111001取反 10000110加1 10000111 7 练习 请将下面数用八进制和十六进制数 补码 表示 10 32 75 617 111 2483 28654 21003 3 4整型数据 整型数据在内存中的存放形式数据在内存中以二进制的补码表示每一个整型数据在内存中占两个字节正数的补码和源码相同 负数的补码等于该数绝对值的源码加1 整型数据分类整型变量根据其数值的范围 可以将变量定义为三类 基本整型 int 2短整型 shortint 2长整型 longint 4为了充分利用变量的表数范围 又可以将其划分为两类 有符号数 signed 可省略 无符号数 unsigned 组合起来就有六种 int shortint longint unsignedint unsignedshortint unsignedlongint 3 4 2整型变量 3 4整型数据 整数在存储单元的存储情况 以13为例 3 4 2整型变量 3 4整型数据 整型变量的定义例如 inta b longnum i unsignedshortc d 例3 2不同类型整型数据的运算 includevoidmain inta b c d unsignedu a 12 b 24 u 10 c a u d b u printf a u d b u d n c d a u 22 b u 14 3 4 2整型变量 3 4整型数据 值在 32768 32767范围内 认为是int型值在 2147483648 214748647内 认为是longint型八进制 十六进制常量的类型根据数值的大小可以是整型 无符号整型 0 65535 长整型或无符号长整型整数后有后缀u或U 认为是unsigned型整数后有后缀l或L 认为是longint型 在严格要求类型匹配的场合有用 如函数参数 123123u 123u123ul 01230123u 0123l0123ul 0 x1230 x123u 0 x123ul0 x123ul 3 4 3整型常量的类型 补充 只适用于整型变量 1 占用字节数为n的有符号整型变量 其值域为 2n 8 1 2n 8 1 1 2 占用字节数为n的无符号整型变量 其值域为 0 2n 8 1 3 5实型数据 实数又称浮点数 有两种表示形式十进制小数形式例如 0 345 345 345 0 345 0 0 0 0指数形式例如 3 45e3 3 45E3 都表示3 45 103注意 e前后必须有数字 e后必须为整型数 3e33e33 e3 合法 3ee3e0 3 不合法 实数的类型缺省为double型后缀f或F 为float型 后缀为l或L 为longdouble型 3 5 1实型常量 3 5实型数据 单精度 float 占4个字节 7位有效数字表示数的范围 3 4e 38 3 4e 38双精度 double 占8个字节 15 16位有效数字表示数的范围 1 7e 308 1 7e 308longdouble型 占10个字节表示有效数的范围 3 4e 4932 1 1e 4932如 floatx y doublea b c 3 5 2实型变量 取值范围与值的精度与及其有关 单精度浮点型 float在C语言中用于存储单精度浮点数 float 32位 10 38至10 38 7位有效数字 声明 floatselling price 初始化 floatselling price 11 3 selling price 65 90 双精度浮点型 213 5671435568967 64位 取值范围 10 308至10308 16位有效数字 声明 doublepressure level 初始化 pressure level 213 5671435568967 doubledvalue 35 4 例 float double两种类型使用上的不同 main floata doubleb a 66666 66666 b 66666 666666666666 printf f n f n a b 程序执行结果为 66666 66406266666 666667从本例可以看出 由于a是单精度型 有效位数只有七位 而整数已占五位 故小数二位之后均为无效数字 b是双精度型 有效位为十六位 但TurboC默认格式输出浮点数时 规定小数后最多保留六位 其余部分四舍五入 3 5实型数据 虽然实型数据在程序中的表示形式有两种 但是在内存中均是以指数形式存放 3 5 3实型数据的舍入误差 例3 3 includevoidmain floata b a 123456 789e5 b a 20 printf a f b f n a b a 12345678848 000000 b 12345678848 000000 若数据超过有效位数 则被舍去 故可能产生误差 在线保险单年龄 保险总额 性别 3 6字符型数据 23 98340 M 数值型 字符型 int float char 3 6字符型数据 用单引号括起来的一个字符如 a A b 转义字符 特殊的字符常量 它们都已 开头 代表一个字符 如 n换行符 0空值 t横向跳格 v纵向跳格 b退格 a报警 r回车 f走纸换页 输出反斜杠 输出单引号 ddd1 3位八进制数表示的字符 ASCII码 如 101代表字符 A xhh1 2位十六进制数表示的字符 ASCII码 如 x41代表字符 A 3 6 1字符常量 输出格式控制符 输出字符 3 6字符型数据 用来存放变量 且只能存放一个字符 定义方法 charc1 c2 unsignedcharc3 c4 字符型变量的赋值方法 c1 a c2 101 65Ac3 0 xff 255c4 377 255十进制数向其它数转化 求商取余法其它数向十进制数转化 展开法 3 6 2字符变量 3 6字符型数据 将一个字符常量存放到一个字符变量中 是将该字符相应的ASCII码存放到存储单元中 3 6 3字符数据的存储 例3 4 字符的存储与输出 includevoidmain charc1 c2 c1 a c2 b printf c c n c1 c2 c1 97 c2 98 printf c c n c1 c2 abab 内存中c1 c2的存放形式 3 6字符型数据 字符数据与整形数据可以相互赋值字符数据可以以字符形式输出 也可以用整数形式输出 3 6 3字符数据的存储 例3 5 includevoidmain inti charc i a c 97 printf c d n c c printf c d n i i a 97a 97 注意 TurboC把字符数据处理成一个带符号的整形数据 如 字符 a 的存储形式 符号位 例3 6 includevoidmain charc c 376 printf c d n c c 2 八进制数 376 十进制为254 ASCII码字符为 11111110 unsignedcharc 254 3 6字符型数据 字符串常量 用一对双引号括起来的字符序列如 Hello 1999 a 字符串结束标记 0 每一个字符串常量结尾都有一个字符 0 系统自动加上 如 CHINA 在内存中为 3 6 4字符串常量 a 是一个字符 而 a 是两个字符 大小写字母的转换 includevoidmain charc1 c2 c1 a c2 b c1 c1 32 c2 c2 32 printf c c c1 c2 说明 程序的作用是将两个小写字母a和b转换成大写字母A和B 从 代码表中可以看到每一个小写字母比它相应的大写字母的 码大 语言允许字符数据与整数直接进行算术运算 运行结果 3 7变量赋初值 在定义变量的同时设置初值 亦称初始化如 inta 3 floatf 3 56 charc a inti j k 5 intx 1 y 1 z 1 3 8不同类型数据间的混合运算 整型 实型 包括单 双精度 字符型数据间可以混合运算例如 10 a 12 3 3 14 x 是合法的运算时 不同类型的数据要先转换成同一类型 然后进行运算转换规则 float型数据在运算时一律先转换成double型不同类型进行混合运算时 按照类型级别由低到高的顺序转换字符型和short型在运算时一律转换成int型 3 9算术运算符和算术表达式 3 9 1C运算符 算术运算符与算术表达式 算术 一元 二元 操作数 操作数 运算符 二元运算符 3 9算术运算符和算术表达式 3 9 2算术运算符和算术表达式 基本的算术运算符 加法运算符 或正值运算符 如 2 3 6 减法运算符 或负值运算符 如 3 4 6 乘法运算符 如 2 x 除法运算符 如 x y a b 两个整数相除 其值为整数 如 5 3值为1除数 被除数有一个为负值时 结果 向零取整 如 5 3值为 1除数 被除数有一个为实数时 结果为double型 模运算符 或求余运算符 两侧均为整型数据如 7 4的值为3 7 4 7 4 7 4的值是多少 3 3 3 符号由被除数决定 3 9算术运算符和算术表达式 3 9 2算术运算符和算术表达式 算术表达式和运算符的优先级与结合型用算术运算符和括号将运算对象 也称操作数 连接起来的 符合C语言语法规则的式子 称为算术表达式运算对象包括常量 变量 函数等如 3 14 r rx sqrt 0 25 y abs a b 3 6 运算符的优先级和结合型优先级 先 后 结合型 左结合性 即表达式从左向右计算 强制类型转换可利用强制类型转换将一个表达式转换成所需类型形式 类型名 表达式 double a int x y 注意 int x y 和 int x y不同 float 8 5 例3 7 includevoidmain floatx inti x 3 6 i int x printf x f i d x i x 3 6 i 3 算术 一元 num num num 1 num num num 1 num num num num 前缀 后缀 二元 算术运算符与算术表达式 3 9算术运算符和算术表达式 3 9 3自增 自减运算符 i i在使用i之前 先使i的值加1或减1i i 在使用i之后 再使i的值加1或减1 例3 8 自增或自减运算 includevoidmain inti 0 j j i printf d d n i j i 0 j iprintf d d i j 1011 注意 自增 自减运算符只能用于变量 而不能用于常量或表达式 如 5 a b 和 的优先级别高于算术运算符 结合方向是 自右向左 如 i 相当于 i 3 10赋值运算符 3 10 1赋值运算符 用法 变量 表达式作用 将表达式的值赋给变量 常量 变量时表达式的特例 如 a 5 ave a b 10 注意 与数学中的等式不同 3 10赋值运算符 实型数据 包括单 双精度 赋给整型变量时 舍弃实数的小数部分整形数据赋给单 双精度变量时 数值不变 但以浮点数形式存储到变量中 例3 9 includevoidmain inti floatf i 5 34 f 23 printf d f i f 523 000000 3 10 2赋值结果与类型转换 3 10赋值运算符 3 10 2赋值结果与类型转换 长度相同的有符号与无符号整型数间 原样赋值 但数值有时会有变化 例3 10 includevoidmain unsigneda intb 1 a b printf d u n b a a 65534u b a printf d u n b a 1 65535 2 65534 3 10赋值运算符 3 10 2赋值结果与类型转换 char int l

温馨提示

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

评论

0/150

提交评论