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

下载本文档

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

文档简介

C语言其实很简单 教材配套课件 第2章数据类型 运算符和表达式 2 算术运算 1 基本数据类型 1 整型数据 2 浮点型 实型 数据 3 字符型数据 4 字符串型数据 4 自增与自减运算 5 逗号运算 6 位运算 3 赋值运算 整型常量 整型常量 直接写在程序中的整数 例如10 247 整型常量用C语言怎样说 写为十进制形式写为八进制形式 在整数前加0 a 012 a 10 a 0175 a 125 写为十六进制形式 在整数前加0 x 或0X a 0 xA a 0X7d 不允许写为二进制形式 a 018 八进制数由0 7组成 不能含有8 9 口诀取自 C语言其实很简单 整型变量 变量在使用前要定义 对于要保存整数的变量 应定义为整型变量 如何定义整型变量呢 int是定义整型变量的关键字 这种变量为基本型整型变量 int变量名1 变量名2 inta a 1 1 a 10000 整型变量占几个字节 请问 你的包多大 瞧我的新包 漂亮吧 我的包是小巧可爱型的 我是旅行者 我的包嘛 有这么大 整型变量占几个字节 由编译系统决定 在VisualC 6 0中占4个字节 无论a的值为几 在VisualC 6 0中均占4个字节 inta a 1 1 a 10000 漫画取自 C语言其实很简单 int的类型修饰词 请问 女式的包多大 请问 旅行包多大 请问 女式的包多大 请问 旅行包多大 修饰词 short 表示变量为短整型 即确定占2个字节的整型变量long 表示变量为长整型 即确定占4个字节的整型变量 在VC6中 同基本型 signed 表示变量为有符号型 即可以保存负数的整型变量 signed可省略 unsigned 表示变量为无符号型 即可保存正数和0 但不能保存负数的整型变量 包 的 修饰词 int 的 int的类型修饰词 2 short和long不能同时选用 signed和unsigned不能同时选用 signed可以省略 若使用了修饰词 int可以省略 在VC 6 0中的占用字节数 我们在编程时 应根据实际需要选用不同类型的变量 整型数据在计算机中如何存储 计算机内存由只能存储0和1的存储单元组成 1 2358 89 76 345 整数 将整数转换为二进制 然后存储在计算机中 例如 65存作00000000 01000001 第2章数据类型 运算符和表达式 2 算术运算 1 基本数据类型 1 整型数据 2 浮点型 实型 数据 3 字符型数据 4 字符串型数据 4 自增与自减运算 5 逗号运算 6 位运算 3 赋值运算 可以省略整数部分的0 也可省略小数末尾的0 但必须有小数点 写为小数形式3 141590 1580 0 18 012 36 浮点型常量 浮点型也称实型 1 1 0 1 写为指数形式 实型常量用C语言怎样说 2 1E5表示2 1 105 0 8E 2表示 0 8 10 223 026e 1表示23 026 10 1 23026E1表示0 23026 1011e0表示1 100 E 或e 代表 10 口诀取自 C语言其实很简单 浮点型变量 float是关键字 float变量名1 变量名2 double变量名1 变量名2 单精度型变量占4个字节 表示范围 1038左右 最大7位有效数字 double是关键字 1 单精度型 2 双精度型 双精度型变量占8个字节 表示范围 10308左右 最大15位有效数字 变量在使用前要定义 对于要保存实数 即浮点数 的变量 应定义为实型变量 如何定义实型变量呢 1 23E50 b floatb b 1 5 1 5 b 5 25e 8 doublex 2 0 y y b 0 001234567 0 001234567 b 0 00123456789 0 001234568 y 1 23E50 x 2 0 浮点型变量 2 单精度型 float 和双精度型 double 精度不同 可表示的数据范围不同 应根据实际需要选用 既满足精度 又尽量避免大材小用 定义变量保存地球到太阳之间的距离 1 495978707x1011米doubleem 1 495978707e11 定义变量保存全班同学平均成绩floatscore 定义变量保存宇宙间共有粒子数的估计值 1080doublennn 1E80 定义变量保存某超市进货数量intnumber 定义变量保存人的年龄unsignedintage 浮点型数据在计算机中如何存储 4字节或8字节 指数部分 二进制 小数部分 二进制 小数 2指数 实型数据被转换成 然后按小数部分和指数部分分别存储 两部分都是以二进制形式存储的 其中小数部分固定为 1 f 的形式 与整型数据的存储方式截然不同 符号位正数 0负数 1 8和8 是截然不同的 8是整型常量占4个字节存8的二进制即 00000000 000010008 是浮点型常量转换为1 0 23 小数部分和指数部分分别存1 0和00000011 变量赋值的自动类型转换 只能保存整数 不能保存实数 inta a 2 8 a doubley y 3 整型变量 实型变量 float double int 或有int的修饰词 只能保存实数 不能保存整数 y 2 3 0 口诀取自 C语言其实很简单 常量的后缀 L 或l U 或u F 或f 为了对应变量的类型 常量也有类型 65u 整型常量 不带小数点的常量 默认为基本型整型 int型 实型常量 带小数点或E e 的常量 默认为双精度实型 double型 若要改变常量的类型 可在常量后加后缀 整数后加L l 表示常量为长整型 long 实数后加L l 表示常量为长双精度型 longdouble 二者在VC6中与不加L l 的效果都相同 如 0L 125L 100000L 1 234567L 只能加在整数后面 表示常量为无符号型 即非负 如0U 6U 65535u可既用L又用U 表示常量为无符号长整型 如 0LU 6LU 65535lu 表示常量为单精度型 float 加在整数后也表示为float型 不再为整数 例如 1 23f 356f 即有后缀F f 时 可不加小数点 也表示实数 第2章数据类型 运算符和表达式 2 算术运算 1 基本数据类型 1 整型数据 2 浮点型 实型 数据 3 字符型数据 4 字符串型数据 4 自增与自减运算 5 逗号运算 6 位运算 3 赋值运算 字符型量概述 类似QQ的程序main 发送 你好 现代计算机除能计算数值之外 还能处理文字 用QQ与好友聊天就是一个处理文字的例子 如何编写一个类似QQ的程序呢 文字型数据 用QQ收发消息时 消息是文字的 而不是数值的如何用C语言表示文字型数据呢 用C语言怎样说 先学习1个字符的文字 字符型数据 再学习多个字符组成的文字 字符串 单引号必须为英文 不分左右 单引号内只能有字符 如 ab 错误 也错误 每个字符常量占1个字节 8个bit位 单引号是定界符 它不属于字符内容 字符型常量 一个 先考虑 字符如何用C语言表示 例如要向好友发送一个字符 a 该如何做呢 main 发送a main 发送 a a为变量 发送的是a的值不是字符a本身 用单引号括起 发送的才是字符a本身 一个 用单引号括起的 一个 字符 是要处理的字 符数据 不是变量名 这称字符型常量 a b c a b c 1 5 0 一个空格字符 好友只能收到a 收不到单引号的哦 字符型数据在计算机中如何存储 计算机内存由只能存储0和1的存储单元组成 c 字符型数据 ASCII码 AmericanStandardCodeforInformationInterchange 例如 a 编号为97 存作97的二进制 编号为93 存作93的二进制 ASCII码 标准ASCII码0 127 0 31 127 控制字符 不可显示 32 空格字符 48 57 数字字符 0 9 按 0 9 的顺序依次递增排列 65 90 大写字母字符 A Z 按字母表的顺序依次递增排列97 122 小写字母字符 a z 按字母表的顺序依次递增排列 附录一 128 255为扩展字符 对应的大小写字母ASCII码差32 已知字符 A 的ASCII码为65 则字符 B 的ASCII码是 字符 d 的ASCII码是 66 100 数字字符 0 的ASCII码是0吗 数字字符 1 的ASCII码是1吗 字符型数据与整数的混用 97的二进制 or 字符与整数是混用的字符变作对应的ASCII码 C 1 D C 7 1 a A a 1 A a 65 D 68 68 67 1 55 49 104 h 8 97 653265 数字字符常量与整型常量的区别 5 5 5 的ASCII码不是5 字符型常量 ASCII码为53 存作53的二进制 整型常量 直接存作5的二进制 5 0 5 48 0 5 48 5 5 5 9 0 9 48 0 9 48 9 9 9 0 48 字符对应的一位整数 数字字符 魔术棒 转义字符 是唯一特殊的字符 并不表示 本身 而是改变其后字符的原有含义 转义字符 换行符 n 跳格符 t 响铃符 a n 换行符 a 响铃符 t 跳格符 普通单引号 定界符 普通斜杠字符 转义字符 错误 表示 字符 错误 表示 字符 表示 字符 转义字符 3 ASCII码的八进制 1 3位 一个字符 ASCII码的十六进制 1 2位 一个字符 转义字符 4 61 1 101 A x41 A 19 这使得一种字符可以有多种表示方法 如字符A可表示为 A 101 x41 012 xA 12 x0A 换行符除可写为 n 外 还有哪些表示法呢 已知换行符的ASCII码为10 八进制数不能有数符8 9 字符型变量 字符型变量占1个字节 保存一个字符 保存字符的ASCII码 charc c a c 98 a 有符号 无符号 或省略signed signedchar变量名1 变量名2 可保存负数 范围 128 127 unsignedchar变量名1 变量名2 不能保存负数 范围 0 255 第2章数据类型 运算符和表达式 2 算术运算 1 基本数据类型 1 整型数据 2 浮点型 实型 数据 3 字符型数据 4 字符串型数据 4 自增与自减运算 5 逗号运算 6 位运算 3 赋值运算 字符串型数据 羊肉串 iPhone 双引号括起 英文双引号 不分左右 0 多个字符 字符串 由一个个的单个字符组成 一串字符 字符串常量 BMWZ4 12 5 a 空串 在内存中的存储方式 每字符占1个字节连续存储 多占1个字节存 0 iPhone BMWZ4 12 5 a 空串 0 字符串的长度 长度 6 6 5 1 0 m n 2 m n 3 m n 3 iPhone BMWZ4 12 5 a 空串 0 所包含的字符个数 不含 0 但计空格 m n m n m n 字符常量和字符串常量的区别 没有字符串变量不能企图将字符串常量赋值给字符型的变量 charc c abcde 第2章数据类型 运算符和表达式 2 算术运算 1 基本数据类型 1 整型数据 2 浮点型 实型 数据 3 字符型数据 4 字符串型数据 4 自增与自减运算 5 逗号运算 6 位运算 3 赋值运算 算术运算符 17 5值为23 10值为30 10值为0 5 3值为 25 3值为2 运算量必须为整型或字符型 50 823 9 加 或正号 减 或负号 乘 除 取余数 求模 优先级 先乘除 后加减 优先级相同 高于 doubled 1 0 printf d d 10 口诀取自 C语言其实很简单 算术表达式 表达式的大 中 小括号一律使用小括号 如 c a b c 1 2 3 4 8 2 5 2其中最内层 表示小括号 向外逐层分别表示中括号 大括号 还可继续在外层嵌套 的层数理论上没有限制 10 20 a 2 b x r 8 a b 10sin x sin y 5 a ba ba ba b2ab2 a b a2c a b c 运算符与数据组成表达式 如用单引号或双引号括起来的就不是运算符 也不是表达式了 不是运算符 是字符型常量 5 2 不是表达式 是字符串常量 第 类自动类型转换 所有表达式都有一个值及类型 低类型转换为高类型 char int float double特殊 所有浮点数必然都转换为double再运算 即使两个float型量的运算也都先转换为double 表达式的值 就是表达式的运算结果 表达式的类型 两个运算量类型一致时 与两个运算量的类型一致 两个运算量类型不一致时 表达式的类型与其中较高类型运算量的类型一致 较低类型运算量先被自动转换为高类型再运算 2 4 1 6结果为double型4 0 结果不能为int型的42 4 3结果为double型为5 4 结果不能为整数5 口诀取自 C语言其实很简单 area 12 两类自动类型转换综合练习 类型不怕乱 结果向高看 第 类 变量赋值 第 类 运算过程中 两类自动类型转换 intv 2 doublet 2 8 ints s v t double 2 0 double 5 6 s 5 就 变量 就 高 main doublepai 3 14 intarea r 2 area r r pai printf d area int 4 double 4 0 double 12 56 12 整数除法 5 2结果为2不是2 55 0 2结果为2 55 2 0结果为2 55 0 2 0结果为2 51 2结果为0不是0 51 2结果为0 5 20 7的结果为 2 若有变量intx 3510 则表达式x 1000 1000的值是 如已定义float型的变量a b c 则表达式 a b c 2与1 2 a b c 等效吗 整数除法 两个整数相除 结果只取商的整数部分 只有两个运算数至少有一个为实数 结果才为实数 答案 3000 5 2 int 2 5 0 2 double 2 0 double 2 5 答案 不等效 后者必为0 但等效形式可写为 1 0 2 a b c 或1 2 0 a b c 或1 0 2 0 a b c 口诀取自 C语言其实很简单 强制类型转换 强制类型转换 floatx 4 5 y 2 1 int x y 的值为 6先求和 再将 和 转换 int x y的值为 6 1先把x转换后再求和 类型说明符 量 类型说明符 量 或 类型说明符为int long unsigned float double char等 功能是强制把 量 临时转换为类型说明符的类型 转换后精度可能会受损 如将实数强制转换为int 将double强制转换为float都受损 int 3 8值为3 floatf 5 75 则 int f的值为5 而f的值仍为5 75 口诀取自 C语言其实很简单 算术运算小结和练习 表达式 int double 3 2 0 5 int 1 99 2 的值是 表达式 int double 3 2 0 5 int 1 99 2 的值是 3 1 1 0 1 2 3 5 四舍五入公式 若x是实数 单精度或双精度 把x四舍五入保留小数点后d位的计算公式是 int x 10d 0 5 10d除数的10d必须加 0 若有floatx 123 4567 y 要将x四舍五入保留小数点后2位 将结果存入变量y中的表达式语句是 y int x 100 0 5 100 0 y int x 100 0 0 5 100 0 y int 12345 67 0 5 100 0 y int 12346 17 100 0 y 12346 100 0 y 12346 0 100 0 y 123 46 如将最后的除法写作 100 则y中的值为123 0是错误的 y 12346 100 y 123 y 123 0 取整数的个 十 百 千位 includemain intn 1234 intge shi bai qian ge n 10 shi n 10 10 bai n 100 10 qian n 1000 printf d n ge printf d n shi printf d n bai printf d n qian 4321 取一个整数x的个位 x 10如1234 10得到4取十位 百位 千位 都转换为 取个位 的问题 取十位 先缩小10倍生成新数 原数的十位成为新数的个位 然后取新数的个位 x 10 10如1234 10 10得到3取百位 先缩小100倍生成新数 原数的百位成为新数的个位 然后取新数的个位 x 100 10如1234 100 10得到2 取最高位时 生成的新数只有一位 不再 10也是可以的 取整数x的个位 x 10取整数x的十位 x 10 10取整数x的百位 x 100 10取整数x的千位 x 1000 10 取最高位时 n后可不再 10 第2章数据类型 运算符和表达式 2 算术运算 1 基本数据类型 1 整型数据 2 浮点型 实型 数据 3 字符型数据 4 字符串型数据 4 自增与自减运算 5 逗号运算 6 位运算 3 赋值运算 赋值运算符 a 10 10 走 进去 不同于数学上的等号 它没有相等的含义 不是相等 而是赋值 是把右边的内容赋予左边 而不是相反 赋值后右边内容不变 例 intx 10 y 20 x y 赋值后x y均为20 左边必须是变量 不能是常量也不能是表达式 a a 1 a 1求值 走 进去 x 1 3 3 x 1求值 嘿 搞什么嘛 这里不能装东西 11 10 11 走 进去 赋值表达式 运算符 a 10 a 10 int 12 int 10 表达式5 b 10 20 的值是 运算符的优先级相当低 排在C语言所有运算符的倒数第二位 150 同时 b被赋值变为30 表达式x a 5 b 8 的值是 13 赋值表达式也有表达式的值和类型 均与赋值后左边变量的值和类型相同 的两个作用 表达式求值 改变 左边变量的值 的一个作用 表达式求值 同时 a被赋值为5 b被赋值为8 x被赋值为13 30 5 8 赋值表达式 2 同优先级运算符 从左到右运算 从左到右 的结合性 都是 从左到右 的1 2 3 4 5 同优先级运算符 从右到左运算 从右到左 的结合性 是 从右到左 的 x y 25 x 25 x y均被赋值为25 定义变量时赋初值不能写为连等的形式intx y 25 25 同时 y被赋值为25 25 同时 x被赋值为25 25是刚才表达式计算的结果值 已知整型变量n的值为8 求表达式n n n 2的值 表达式求值后n的值为 复合的赋值运算符 a 5 a a 5 r p r r p x y 7 x x y 7 右边要加 复合的赋值运算符与赋值运算符 相同 优先级倒数第二 从右到左 的结合性 n n n 2 n n 6 n 6 n n 6 n 48 48 n 48 n n 48 n 96 96 96 96 左边也必须是变量 运算符 48 同时 n被赋值为96 同时 n被赋值为48 n n n 2 复合的赋值运算符 2 a b c 12 b c b c 12 a b c 12 b c 12 b c求值 嘿 搞什么嘛 这里不能装东西 走 进去 a 7 1 b a 7 1 b b 8 嘿 搞什么嘛 这里不能装东西 走 进去 8 b 第2章数据类型 运算符和表达式 2 算术运算 1 基本数据类型 1 整型数据 2 浮点型 实型 数据 3 字符型数据 4 字符串型数据 4 自增与自减运算 5 逗号运算 6 位运算 3 赋值运算 计数器按一次 计数 1 自增和自减运算 运算符 i i 1 i i 1 j j 1 j j 1 自增运算符 使变量的值自增1 结果仍存回该变量 自减运算符 使变量的值自减1 结果仍存回该变量 单目运算优先级很高 仅次于括号 i 或 i i 或 i j 或 j j 或 j 都使i自增1 这一点没有区别 自增和自减运算 设i 5 j 10 i i j j i j 1后i的值 1后j的值 都使j自减1 这一点没有区别 1前j的值 1前i的值 自增和自减运算 2 的两个作用 表达式求值 改变 左边变量的值 的一个作用 表达式求值 也有两个作用 表达式求值 改变变量的值 1后i的值 1后j的值 1前j的值 1前i的值 会改变运算量的值 也不能用于常量 表达式 只能用于变量 如5 错误 a b 错误 自增和自减运算 3 inta 1 b b 5 a 执行后 b值为 a值为 等价于b 5 a a a 1 inta 1 b b 5 a 执行后 b值为 a值为 1 4 2 2 3 2 inta 3 b 4 intx y x a b y a b 3 4 4 6 执行后 x值为7 y值为10 等价于a a 1 b 5 a 第2章数据类型 运算符和表达式 2 算术运算 1 基本数据类型 1 整型数据 2 浮点型 实型 数据 3 字符型数据 4 字符串型数据 4 自增与自减运算 5 逗号运算 6 位运算 3 赋值运算 5 逗号运算符和逗号表达式 逗号运算符优先级最低 倒数第一 结合顺序为自左至右 表达式1 表达式2 表达式3 逗号运算符 依次从左到右分别计算各个表达式的值 整个 逗号表达式 的值为其中最后一个表达式 上例为表达式3 的值 表达式1 表达式2 表达式3 取刚才表达式3的值 相当于一小段程序 1 1 2 3 表达式的值为5 x 5 5 2 x 3 表达式的值为2 x被赋值为5 必须依次计算 x a 1 b 3 b a b 此为赋值语句 x被赋值为5 1 3 4 5 3 如有inta 2 b 4 c 6 x y 1 若执行y x a b b c 后 x值为6 y值为10 2 若执行y x a b b c 后 x值为6 y值为6 y 6 10 y 10 y x 6 10 逗号表达式 2 y 6 10 6 10 10 被丢弃 y x 6 10 设变量已正确定义为整型 则表达式n i 2 i i 的值为 2 3 3 第2章数据类型 运算符和表达式 2 算术运算 1 基本数据类型 1 整型数据 2 浮点型 实型 数据 3 字符型数据 4 字符串型数据 4 自增与自减运算 5 逗号运算 6 位运算 3 赋值运算 位在我心中 位运算 二进制 1001011010100110101001 位 bit 位运算就是在二进制位的基础上的运算 数据必须转换为二进制才能进行 只能对整型数据和字符型数据进行 2个条件 运算符 6个运算 按位与 参与运算的两个数取二进制 然后将对应的各二进制位相 与 只有对应的两个二进制位都为1时 结果位

温馨提示

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

评论

0/150

提交评论