C语言设计张捷第三章数据类型、运算符和表达式.ppt

上传人:max****ui 文档编号:6334832 上传时间:2020-02-23 格式:PPT 页数:49 大小:378KB
返回 下载 相关 举报
C语言设计张捷第三章数据类型、运算符和表达式.ppt_第1页
第1页 / 共49页
C语言设计张捷第三章数据类型、运算符和表达式.ppt_第2页
第2页 / 共49页
C语言设计张捷第三章数据类型、运算符和表达式.ppt_第3页
第3页 / 共49页
点击查看更多>>
资源描述
1 第三章数据类型 运算符和表达式 2 3 1C语言数据类型 3 1 1C语言数据类型整型字符型实型 浮点型 枚举类型数组结构体类型共用体类型 单精度型双精度型 基本类型 构造类型 指针类型 空类型 数据类型 3 3 1C的数据类型 4 3 2常量与变量 3 2 1常量1 定义 在程序执行期间 其值不可改变的量称为常量2 类型 数值常量例如 10 3 2 68等符号常量即用一个符号代表一个常量例如 definePI3 1415926main floatr l s r 2 l 2 PI r s PI r r printf l d s d l s 5 说明 符号常量必须先定义后才能用它表示一个数值 符号常量的值在其作用域内不能改变 也不能再被赋值 符号常量名习惯用大写字母表示 6 3 2 2变量 1 定义 程序执行期间值可以改变的量 2 命名规则 变量名由标识符表示 只能由字母 数字和下划线三种字符组成 且第一个字符必须为字母或下划线 例如 下列标识符中 不合法的变量名有 M D John 12 gf 1add ce36 age 每个变量分配4个字节 3 a 7 在C语言中 变量必须强制定义 其目的 1 凡未被事先定义的 不作为变量名 2 每一个变量被指定为一确定的类型 在编译时就能为其分配相应的存储单元 3 指定每一个变量为一确定的类型 在编译时据此检查该变量所进行的运算是否合法 例如 如果变量a b是整型类型 则可以进行求余运算 a b而两个实数类型的变量求余是不允许的 8 选变量名时 要做到 见名知意 例如 namest agexmnlclasssum 大小写字母是两个不同的字符 C变量名习惯用小写字母表示 建议变量名的长度不要超过8个字符 请注意 9 3 3整型数据 3 3 1整型常量的表示法十进制整数 由数字 0 9 和正负号表示例如 123 456 0等八进制整数 以0开头数是八进制数例如 0123即 123 8 83 10 123 8 1 82 2 81 3 80 83 10十六进制整数 以0 x或0X开头 例如 0 x123即 123 16 291 10 0 x12即 12 16 18 10 10 3 3 2整型变量整型数据在内存中的存放形式 补码表示法 便于加减运算 inti i 10 10 1010 2 2 10 2 5 2 2 2 1 0 余数 0 1 0 1 首位 0000000000001010 0000000000001010 1111111111110101 1111111111110110 10的原码 取反 取反后再加1 得 10的补码 10的表示法 正数的补码等于它的原码 10 11 2整型变量的分类 基本型 以int表示短整型 以shortint或short表示1 类型长整型 以longint或long表示 123l 123L 无符号基本型 unsignedint 无符号型无符号短整型 unsignedshort 无符号长整型 unsignedlong 32768 32767 一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数的范围扩大一倍 inta 变量a的数值范围 32768 32768 unsignedintb 变量b的数值范围 0 65535 12 整型变量的字长short型 字长16位 2个字节 long型 字长32位 4个字节 int型 随编译程序而定 可以是2个字节 也可以是4个字节 C要求long型数据长度不短于int型 short型不长于int型 short int long long型可以得到大范围的数据 但同时会降低运算速度 因此除非不得已 不要随便使用long型 13 整型数据的溢出 main inta b a 32767 b a 1 printf d d a b 运行结果 32767 32767改进 将变量a和b改成long型 并按 ld格式输出 14 整型数据的数据范围请看P43表 注意 1 在一个整数常量后面加一个字母l或L 则认为是long型常量 2 在一个整数常量后面加一个字母u或U 则认为是unsignedint型常量 15 3 4实型数据 3 4 1实型常量表示形式有如下两种 十进制数形式 由数字和小数点及正负号组成 注意 必须有小数点 例如 23 678 67823 指数形式 由数字 小数点 字母e或E及正负号组成 注 e或E之前必须有数字 且后指数必须为整数 例如 3 5E 52e3错误 E23 6e3 5 e6e 16 3 4 2实型变量实型变量可分为 单精度 float型 如 floatx y 双精度型 double型 如 doublea b c 说明 1 float型变量在内存中占4个字节 double型变量在内存中占8个字节 2 单精度实数提供7位有效数字 双精度实数提供15 16位有效数字 3 一个实型常量不分float和double型 一个实型常量可以赋给一个float型或double型变量 并根据变量的类型截取实型常量中相应的有效位数字 例如 floata doubleb a 123456 789e5 b 123456 789 17 main floata c doubleb a 123456 789e5 b 123456789111111 789 c a 20 printf a f b f c f n a b c 输出结果 a 12345678848 000000 b 123456789111111 781000 c 12345678848 000000 避免将一个很大的数与一个很小的数相加 以免出现舍入误差 18 3 5字符型数据 3 5 1字符常量1 字符常量 用单引号括起来的一个字符 例如 a A 注 a 与 A 是的字符常量 不同 2 转义字符 以一个 开头的字符序列例如 n 换行 t 横向跳格 水平制表 b 退格 v 竖向跳格 垂直制表 r 回车 f 走纸换页 a 报警 0 空字符 19 说明 1 ddd 与 xhh 分别表示用八进制数或十六进制数表示一个字符 例 101 代表ASCII码 十进制 为65的字符 A 系统中所有字符都有ASCII值 见374页 2 由于 在C语言中都有了特殊的意义 故要想在字符串中使用它们 须在其前面再加上一个反斜线 例如 反斜线 单引号 双引号3 除了前面介绍的特殊转义字符外 字母 代表字母本身 如 c 代表字母c 20 判断下列字符串的长度 054 x56 c ta n t bab 21 22 3 5 2字符变量 定义形式 char标识符1 标识符2 标识符n例如 charc1 c2 c3 ch c1 a c2 b c3 c ch d 说明 1 字符变量在内存中占一个字节 2 在内存中 是把字符对应的ASCII码值放到存储单元中 3 字符型数据与整型数据之间可以通用 6 6 23 main charc1 c2 c1 97 c2 98 printf c c n c1 c2 printf d d n c1 c2 输出结果 ab9798 main inti charc i a c 97 printf c d n c c printf c d n i i 输出结果 a 97a 97 24 3 5 4字符串常量 1 定义 括在一对双引号之内的字符序列或转义字符序列称为字符串常量 例如 Howareyou a abc n t 2 存储 字符串中的字符依次存储在内存中一块连续的区域内 并且把空操作字符 0 自动附加到字符串的尾部作为字符串的结束标志 故字符个数为n的字符串在内存中应占n 1个字节 例 c china china 0 25 b 与 B 是否相同 b 与 b 是否相同 b为98 B为66 b 是字符常量 b 是字符串常量 26 3 6变量赋初值 1 初始化 在定义变量的同时为变量赋初值2 形式 类型标识符变量名 常量或常量表达式例如 intx 10 charch a 变量赋初值允许使用符号常量例如 definePI3 1415926 floatx PI 可对被定义的变量的一部分赋初值例如 inta b c 1 d 2 floatr 2 l s 可对几个变量赋以同一个初值例如 inta 6 b 6 c 6 或可写为 inta b c 6 27 3 7各类数值型数据间的混合运算 一 运算过程 先自动转换成同类数据 再进行运算 二 转换规则 低字长类型转换成高字长类型 28 3 7各类数值型数据间的混合运算 形式 隐式转换 由系统自动进行 显式转换 强制类型转换 隐式转换的转换规则 intunsignedintlongintunsignedlongintdoubleshort charfloat 1 float型数据一律转换成double型数据 2 char和shortint型数据一律转换成int型数据以上两条转换原则说明 即使两个操作数类型相同 但只要它们同属char shortint或float类型 则转换一定发生 29 例 若有 inti floatf doubled longe 试判断表达式3 b i f d e的类型 intunsignedintlongintunsignedlongintdoubleshort charfloat double型 30 C语言使用的基本表达式有 赋值表达式 如 a 3 算数表达式 如 3 4 2 关系表达式 如 3 2 逻辑表达式 如 3 5 a b 条件表达式 如 a b a b 逗号表达式 如 a 3 b 4 c 5 31 3 8算术运算符和算术表达式 1 基本的算术运算符 说明 上述运算符均为双目运算符 即有两个操作数 2 在 运算中 若操作数均为整数 则执行整除运算 舍去小数部分 例如 5 3 3 要求两侧均为整数 运算不能用于float和double型数据例如 2 32 2 算术表达式和运算符的优先级与结合性 1 算术表达式 用算术运算符和括号将操作数连接起来的 符合 语法规则的式子 例如 a b a b c 2 8 2 优先级 高于 3 结合性 自左至右的结合方向 例如 a b c3 强制类型转换形式 类型名 表达式 例如 double a b 33 说明 表达式应用括号括起例如 int x y 若要得到x 2的小数部分 应写为 float x 2还是float x 2 在强制类型转换时 得到一个所需类型的中间变量 原来变量类型未发生变化 例如 floatx 8 6 inty y int x 34 请看下面程序段 main floatx inti x 3 6 i int x printf x f i d x i 输出结果 x 3 600000 i 3 注意 强制类型转换后并不改变原来变量的类型 35 4 自增 自减运算符 作用 使变量的值增 或减 如 i i 使用之前 先使i的值加 减 1 i i 使用之后 使i的值加 减 1 i先执行i i 1 再使用i的值i 先使用i的值 再执行i i 1例如 inta 1 b b a b a 举例 intj i 3 j i j的值为4 i为4 j i j的值为4 然后i的值变为5 j i j的值 5 然后i的值变为6 36 说明 1 为单目运算符 2 只能用于变量 而不能用于常量或表达式 例如 x y a b 中合法的为 3 自增 自减运算符为右结合性 即自右至左 例如 a a 4 自增 自减运算符 错误的结合 a 37 练习题 设a 2 则执行语句k a a 后的k值为多少 k 6 a 4 a i i i printf d d i i 请避免这种写法 38 3 9赋值运算符和赋值表达式 1 赋值运算符 形式 变量名 常量或表达式作用 将右边常量或表达式的值赋给左边的变量例如 b c d 要求 如果表达式类型与左边的变量的类型不匹配 自动进行类型转换 39 2 类型转换的原则 1 将实型数据赋给整型变量时 舍弃实数的小数部分如 若a为int型变量 执行a 3 56后 则a的值3 2 将整型数据赋给实型数据时 数值不变 但以浮点形式存储到变量中 如 若b为float型变量 执行b 35后 则b为35 00000 3 整型数据赋给字符型变量时 只将低8位原封不动地送到字符变量中 即截断 40 4 字符型数据赋给整型变量时 将字符数据 8位 放到整型变量低8位中 高8位则需要依据 符号扩展 来决定 41 5 将带符号数据赋给长度相同的无符号型变量 原样照赋 6 double赋给float时 截取前面7位有效数字 42 43 44 P66 3 11 写出下面赋值的结果 格中写了数值的是要将它赋给其它类型的变量 将所有空格添上赋值后的数值 int9910076536842 1 char c d L 5 D X unsignedint991007653684265535 float99 000000100 00000076 00000053 6568 00000042 00000065535 000000 longint991007653684265535 45 3 复合赋值运算符复合赋值运算符 在赋值符 之前加上其它运算符共有10种复合赋值运算符 46 例如 a 3a a 3x y 3x x y 3 4 赋值表达式定义 由赋值运算符将一个变量和一个表达式连接起来的式子 形式 变量 表达式说明 赋值表达式的值为被赋值的变量的值 例如 a b c 6a b 4 c 6 a b 4 c 6 47 练习 写出顺序执行下列表达式运算后的x值 1 x a b 102 x 25 c 3 X 10 X 1 赋值表达式中可以包含复合赋值运算符例如 若a 12 计算表达式a a a a运算后a的值第一步 a a aa a a a 12 12 12 132第二步 a 132a a 132 264 48 3 10逗号运算符和逗号表达式 1 逗号运算符 即 优先级 为所有运算符中级别最低的 2 逗号表达式形式 表达式1 表达式2 表达式n求解过程 顺次求解表达式1 表达式2 最后求解表达式n 逗号表达式的值为表达式n的值 例如 a 3 5 a 4a 3 5 a 4 a 5x a 4 3 a 1 a 10 60 20 10 49 第三章作业 文字部分请在书上划出 程序部分上机调式 P653 2 3 5 3 6 3 7 3 8 3 9 3 10 3 12第一次上机内容 调式第一章例题第二次及第三次上机内容 1 调试第三章作业2 编写三个程序 1 交换a与b的值 2 求1 2 3 100的值 参考P32例题 3 编写一个C程序 输入a b c3个值 输出其中最大值 3 5 a b
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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