c语言的数据类型、运算符与表达式.ppt

上传人:max****ui 文档编号:8617648 上传时间:2020-03-30 格式:PPT 页数:46 大小:1.18MB
返回 下载 相关 举报
c语言的数据类型、运算符与表达式.ppt_第1页
第1页 / 共46页
c语言的数据类型、运算符与表达式.ppt_第2页
第2页 / 共46页
c语言的数据类型、运算符与表达式.ppt_第3页
第3页 / 共46页
点击查看更多>>
资源描述
第3章数据类型 运算符与表达式 预备知识数据类型常量与变量不同类型数据间的转换运算符和表达式 3 0预备知识计算机中数的表示及进制转换数码 基与权数码 表示数的符号基 数码的个数权 每一位所具有的值数制 任何一种数制表示的数都可以写成按位权展开的多项式之和 其一般形式为 N dn 1bn 1 dn 2bn 2 d0b0 d 1b 1 d mb m式中 n 整数的总位数m 小数的总位数d 某位的数码b 基数 各种进制之间的转换二进制 八进制 十六进制转换成十进制方法 按权相加 各种进制之间的转换 整数 二进制 八进制 十六进制转换成十进制方法 按权相加 十进制转换成二进制 八进制 十六进制原理 方法 连续除以基 从低到高记录余数 直至商为0 二进制与八进制之间的转换二进制转换成八进制 从右向左 每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 二进制与十六进制之间的转换二进制转换成十六进制 从右向左 每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 字节和位内存以字节为单元组成每个字节有一个地址一个字节由8个二进制位组成每个二进位的值是0或1 数值的表示方法 原码 反码和补码原码 最高位为符号位 其余各位为数值本身的绝对值反码 正数 反码与原码相同负数 符号位为1 其余位对原码取反补码 正数 原码 反码 补码相同负数 最高位为1 其余位为原码取反 再对整个数加1 十进制数二进制数原码二进制数补码十六进制数150111101111F140111001110E130110101101D120110001100C110101101011B100101001010A901001010019801000010008700111001117600110001106500101001015400100001004300011000113200010000102100001000011 000000000000 010000 十进制数二进制数原码二进制数补码十六进制数 11000111111 21001011110 31001111101 41010011100 51010111011 61011011010 71011111001 81100011000 91100110111 101101010110 111101110101 121110010100 131110110011 141111010010 151111110001 1610000 负数补码转换成十进制数 最高位不动 其余位取反加1 例补码 11111001取反 10000110加1 10000111 7 原码 65 反码 原码按位取反 补码 反码加一 用补码表示后 减法用加法计算 如 65 68 3 11000001 10111110 10111111 01000100 10111111 01000100 100000011 10111111 假定8位机器 表示的数为 128 127 16 32 48 20 128 108 16 127 143 9 5 49 7 16 12 4 3 1数据类型数据类型总表 数据类型决定 1 数据占内存字节数3 数据取值范围3 其上可进行的操作 基本数据类型 整型 字符型 实型 有 无 说明 数据类型所占字节数随机器硬件不同而不同 上表以IBMPC机为例 3 2常量与变量标识符定义 用来标识变量 常量 函数等的字符序列组成 只能由字母 数字 下划线组成 且第一个字母必须是字母或下划线大小写敏感不能使用关键字长度 最长32个字符命名原则 见名知意不宜混淆如l与I o与0 例 判断下列标识符号合法性sumSumM D JohndayDate3daysstudent name 33lotus 1 2 3chara b above 123 M D John 3days 33 char 123 a b 练习 判断合法的标识符A PadB scanfc voidD a P da10maxtempA b bB CCPc hiyD iswabcfloatINTA 0123B del wordC listD keep ssipedsigned jerwind B D 一般用大写字母 以示区别 但不是必须的 是宏定义预处理命令 不是C语句不加分号 如 definePRICE30 常量定义 程序运行时其值不能改变的量 即常数 分类 符号常量 用标识符代表常量定义格式 define符号常量常量 例符号常量举例 ch2 1 c definePRICE30main intnum total num 10 total num PRICE printf total d total 运行结果 total 300 直接常量 整型常量实型常量字符常量字符串常量 整型常量 整常数 三种形式 十进制整数 由数字0 9和正负号表示 如123 456 0八进制整数 由数字0开头 后跟数字0 7表示 如0123 011十六进制整数 由0 x开头 后跟0 9 a f A F表示 如0 x123 0Xff 例12与12L 例30000为int型65536为longint型 整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L 认为它是longint型常量 问题 0123 100 x123 100Xff 10 实型常量 实数或浮点数 表示形式 十进制数形式 必须有小数点 如0 123 123 123 0 0 0 123 指数形式 e或E之前必须有数字 指数必须为整数 如12 3e3 123E2 1 23e4 e 5 1 2E 3 5 实型常量的类型默认double型在实型常量后加字母f或F 认为它是float型 字符常量定义 用单引号括起来的单个普通字符或转义字符 字符常量的值 该字符的ASCII码值 如 101 A 012 n 376 x61 a 60 0 483 例 A 101 x41 65 如 A 65 a 97 0 48 n 10 如 a A n 101 转义字符 反斜线后面跟一个字符或一个代码值表示 例转义字符举例 ch2 001 c ch2 004 c main printf 101 x42C n printf Isay Howareyou n printf CProgram n printf Turbo C 运行结果 屏幕显示 ABCIsay Howareyou CProgram Turbo C 例main printf Y b n 运行结果 屏幕显示 打印机输出 字符常量与字符串常量不同 字符串常量定义 用双引号 括起来的字符序列存储 每个字符串尾自动加一个 0 作为字符串结束标志 变量概念 其值可以改变的量变量名与变量值变量定义的一般格式 数据类型变量1 变量2 变量n 变量初始化 定义时赋初值 例 inta b c floatdata 决定分配字节数和数的表示范围 合法标识符 例 inta 2 b c 4 floatdata 3 67 charch A intx 1 y 1 z 1 intx y z 1 变量定义位置 一般放在函数开头 Ch2 005 c 变量的使用 先定义 后使用 例1intstudent stadent 19 Undefinedsymbol statent infunctionmain 例2floata b c c a b Illegaluseoffloatingpointinfunctionmain 凡未被事先定义的 不做为变量名 以避免变量名使用出错 每个变量属于一确定类型 以避免运算时类型出错 比如求余运算 每个变量在定义时被指定为一确定类型 编译时为其分配相应存储单元 整型变量占字节数随机器不同而不同 一般占一个机器字short int long可用sizeof 类型标识符 测量 实型变量float 占4字节 提供7位有效数字double 占8字节 提供15 16位有效数字 字符型变量字符变量存放字符ASCII码char与int数据间可进行算术运算 例floata a 111111 111 a 111111 1 doubleb b 111111 111 b 111111 111 例a D a 68 x A 5 x 65 5 s G s 33 71 没有字符串变量 用字符数组存放 Ch2 006 c 例 ch2 003 c definePRICE12 5main intnum 3 floattotal charch1 ch2 D total num PRICE ch1 ch2 A a printf total f ch1 c n total ch1 运行结果 total 37 500000 ch1 d 在内存中字符变量存字符的ASCII码 如 A 65 B 66字符变量和整型变量是通用的 但字节数不同 比如 main inta b charc d a 65 b x41 c 65 d x41 printf c d n a a printf c d n b b printf c d n c c printf c d n d d A 65A 65A 65A 65 01000001 01000010 无符号字符 a 97254 376作为数字输出时 最高位理解为符号位反码原码 01100001 11111101 11111110 10000010 3 3不同类型数据间的转换隐式转换什么情况下发生运算转换 不同类型数据混合运算时赋值转换 把一个值赋给与其类型不同的变量时输出转换 输出时转换成指定的输出格式函数调用转换 实参与形参类型不一致时转换运算转换规则 不同类型数据运算时先自动转换成同一类型 显式转换 强制转换 一般形式 类型名 表达式 例 int x y int x y double 3 2 int 3 6说明 强制转换得到所需类型的中间变量 原变量类型不变 例main floatx inti x 3 6 i int x printf x f i d x i 结果 x 3 600000 i 3 精度损失问题 Ch2 007 c Ch2 008 c 3 4运算符和表达式 学习运算符应注意 运算符功能与运算量关系要求运算量个数要求运算量类型运算符优先级别结合方向结果的类型 算术运算符和表达式基本算术运算符 结合方向 从左向右优先级 2 3 4 说明 可为单目运算符时 右结合性两整数相除 结果为整数 要求两侧均为整型数据 例5 2 5 2 0 例5 2 5 2 1 10 5 1 5 5 2 例5 2为2 5 2 0为 2 5 例5 2为1 5 2为 11 10为15 1为05 5 2 自增 自减运算符 作用 使变量值加1或减1种类 前置 i i 先执行i 1或i 1 再使用i值 后置i i 先使用i值 再执行i 1或i 1 例j 3 k j j 3 k j j 3 printf d j j 3 printf d j a 3 b 5 c a b a 3 b 5 c a b k 4 j 4 k 3 j 4 4 3 c 20 a 4 c 15 a 4 说明 不能用于常量和表达式 如5 a b 结合方向 自右向左优先级 2 3 4 例 i i i 3 printf d i 3 例 i i 3 printf d i Ch2 009 c 赋值运算符和表达式简单赋值运算符符号 格式 变量标识符 表达式作用 将一个数据 常量或表达式 赋给一个变量 复合赋值运算符种类 含义 exp1op exp2 exp1 exp1opexp2 例a 3 d func c d 2 说明 结合方向 自右向左优先级 14左侧必须是变量 不能是常量或表达式 赋值表达式的值与变量值相等 且可嵌套 赋值转换规则 使赋值号右边表达式值自动转换成其左边变量的类型 例3 x 2 y a b 3 例floatf inti i 10 f i 则f 10 0 例inti i 2 56 结果i 2 例 a b c 5a b 5 a 5 c 6 a b 4 c 6 a b 10 c 2 表达式值为5 a b c值为5 b 5 a 5 表达式值11 c 6 a 11 表达式值10 a 10 b 4 c 6 表达式值5 a 5 b 10 c 2 例 a 12 a a a a 例 inta 2 a 4 1 a a a a 3 a 264等价于a a a a a a a 0等价于a a a a a a a a 3 逗号运算符和表达式形式 表达式1 表达式2 表达式n结合性 从左向右优先级 15逗号表达式的值 等于表达式n的值用途 常用于循环for语句中 例a 3 5 a 4a 3 5 a 4 a 5例x a 3 6 3 x a 3 6 a例a 1 b 2 c 3 printf d d d a b c printf d d d a b c b c a 15 表达式值60 a 15 表达式值20 赋值表达式 表达式值18 x 18 逗号表达式 表达式值18 x 3 1 2 3 3 2 3 逗号运算符和表达式形式 表达式1 表达式2 表达式n结合性 从左向右优先级 15逗号表达式的值 等于表达式n的值用途 常用于循环for语句中 例 ch2 6 c includemain intx y 7 floatz 4 x y y 6 y z printf x d n x 运行结果 x 3 隔开函数参数的逗号 不是逗号运算符 printf d d d a b c printf d d a b c 十进制 4956 4 10 9 10 5 10 6 10 二进制 1011 1 2 0 2 1 2 1 2 十六进制 81AE 8 16 1 16 10 16 14 16 八进制 4275 4 8 2 8 7 8 5 8
展开阅读全文
相关资源
相关搜索

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


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

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


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