基本数据类型运算符与表达式.ppt

上传人:tia****nde 文档编号:6620352 上传时间:2020-03-01 格式:PPT 页数:42 大小:2.65MB
返回 下载 相关 举报
基本数据类型运算符与表达式.ppt_第1页
第1页 / 共42页
基本数据类型运算符与表达式.ppt_第2页
第2页 / 共42页
基本数据类型运算符与表达式.ppt_第3页
第3页 / 共42页
点击查看更多>>
资源描述
程序是解决某种问题的一组指令的有序集合 著名计算机科学家沃思 NikiklausWirth 提出一个公式 程序 数据结构 算法 学习的意义 程序是什么 对数据的描述 在C语言中 体现为数据类型的描述 对数据处理的描述 是为解决一个问题而采取的方法和步骤 是程序的灵魂 结论 学好C语言首先就必须十分了解C语言的数据类型 运算符与表达式 2 1C语言数据类型 数据类型决定 1 数据占内存字节数2 数据取值范围3 其上可进行的操作 本章所介绍的数据类型 3 2常量 变量和标识符1 标识符定义 用来标识变量 常量 函数等的字符序列组成 只能由字母 数字 下划线组成 且第一个字母必须是字母或下划线C语言的关键字不能用作变量名大小写敏感长度 有效长度为32个字符 随系统而异 但至少前8个字符有效命名原则 变量名和函数名中的英文字母一般用小写 以增加可读性见名知意不宜混淆如l与I o与0 在TC2 0及BC3 1中 变量名 标识符 的有效长度为 个字符 缺省值为 但在VC中其长度可达到255 例 判断下列标识符号合法性sumSumM D JohndayDate3daysstudent name 33lotus 1 2 3chara b above 123 M D John 3days 33 char 123 a b 字符非法 数字3不可作首字符 字符非法 char是关键字 字符非法 不可作首字符 3 2常量 变量和标识符2 常量定义 程序运行时其值不能改变的量 即常数 常量的分类 直接常量 值常量 整型常量 10 15 10 30实型常量 12 5 30 0 1 5字符常量 A b c 字符串常量 sum A 123 符号常量用标识符来代表常量 其定义格式为 define符号常量常量 defineNUM20 definePI3 1415926 include definePRICE30voidmain intnum total num 10 total num PRICE printf total d total 运行结果 total 300 行尾不能有分号define前面一定要有 符号常量名最好使用大写符号常量名最好有意义 3 2常量 变量和标识符3 变量定义 程序运行时其值可以被改变的量变量的两要素 变量名 变量值变量的定义格式 变量的初始化 定义时赋初始值变量的使用 先定义 后赋值变量定义位置 一般放在函数开头 存储类型 数据类型变量名1 变量名2 变量名n intx y z floatradius length area charch 决定分配字节数和数的表示范围 合法标识符 例 inta 2 b c 4 floatdata 3 67 charch A intx 1 y 1 z 1 intx y z 1 例1 intstudent stadent 19 Undefinedsymbol statent infunctionmain 例2 floata b c c a b Illegaluseoffloatingpointinfunctionmain 3 3简单数据类型与表示范围 1 整型数据 整型常量 十进制整数 由数字0 9和正负号表示 如 123 456 0八进制整数 由数字0开头 后跟数字0 7表示 如 0123 011十六进制整数 由0 x或0X开头 后跟0 9 a f A F表示 如0 x123 0Xff 定义整数的符号常量 defineNUM120 十进制数20 defineNUM2020 八进制数 十进制16 defineNUM30 x2a 十六进制数 十进制42 思考题 下列整型常量哪些是非法的 012 oX7A 00 078 0 x5Ac 0 xFFFF 0034 7B 首字符不能是字母o 八进制数中不能有数字8 十进制数中不能有字母B 2 整数常量的分类 根据其值所在范围确定其数据类型 在TC2 0或BC3 1下 如果整型常量的值位于 32768 32767之间 C语言认为它是int型常量 如果整型常量的值位于 2147483648 2147483647之间 C语言认为它是long型常量 整型常量后加字母l或L 认为它是longint型常量 比如123L 45l 0XAFL 无符号数也可用后缀表示 整型常数的无符号数的后缀为U或u 例如 358u 0 x38Au 235Lu均为无符号数 前缀 后缀可同时使用以表示各种类型的数 如0XA5Lu表示十六进制无符号长整数A5 其十进制为165 3 实型数据 实型常量 实数或浮点数 十进制小数形式 由数字0 9和小数点组成 如 0 0 5 6 5 指数形式 由十进制数 加阶码标志e或E以及阶码 只能为整数 可以带符号 组成 其一般形式为 aEn其中 a为十进制数 n为十进制整数 都不可缺少 其可表示为a 10n 合法的实数表示 2 1E5表示2 1 105 3 7E 2表示3 7 10 2 非法的实数表示 345 无小数点 E7 阶码标志E之前无数字 5 无阶码标志 50 E3 负号位置不对 实型变量 单精度实型 float floatf 3 14 g 这种定义的变量在内存中占4个字节 32位 的存储单元 双精度实型 double doublex y 这种定义的变量在内存中占8个字节 64位 的存储单元 长双精度实型 longdouble longdoublex y 在TC或BC下 这种定义的变量在内存中占10个字节 80位 的存储单元 在VC下则占8个字节 64位 注意 三种实数类型中 其精度是float double longdouble longfloat实际上就是double 因此 没有longfloat类型 所有的实型常量按照double类型处理 3 实型数据 实型数据的精度 includevoidmain floata 定义float型变量adoubleb c 定义double型变量b和ca 123 456789 对变量a赋值为123 456789b a 将变量a赋给变量bc 123 456789 对变量c赋值为123 456789printf a fb lfc lf n a b c 123 456787 123 456787 123 456789 a 123 456787b 123 456787c 123 456789 float型变量最多只能精确表示8个数字 因此显示a的值时 只能有效显示前面8个数字即123 45678 最后追加一位数字7是随机的 课堂练习 题目 编写程序 计算半径为15 67cm的圆面积 要求分别使用单精度型和双精度型数据计算 definePI3 14159 4 字符型数据和字符串常量 字符型常量 定义 用单引号括起来的单个普通字符或转义字符 如 a A n 101 字符常量的值 该字符的ASCII码值 如 A 65 a 97 0 48 n 10 转义字符 反斜线后面跟一个字符或一个代码值表示 如 101 A 012 n 376 x61 a 60 0 483 例 A 101 x41 65 例 转义字符举例 includevoidmain printf 101 x42C n printf Isay Howareyou n printf CProgram n printf Visual C 运行结果 屏幕显示 ABCIsay Howareyou CProgram Visual C 例 voidmain printf Y b n 运行结果 屏幕显示 打印机输出 字符串常量定义 用双引号 括起来的字符序列存储 每个字符串尾自动加一个 0 作为字符串结束标志 例1 字符串 HELLO 在内存中 例2 空串 0 字符常量与字符串常量不同 例 charch ch A 例 charch ch A 课堂练习 题目 1 输入两个字符 如果先输入的字符大则输出1 否则输出0 或输入一个字符 输出它的下一个字符 课堂练习 2 假设变量ch中已经存放字母 A 编写程序将ch中的字母转换成小写字母后输出 3 编写程序 在屏幕上输出 5 简单数据类型的表示范围 符号位 十六位整型数所表示的数据范围 数据位 6 简单的数据输出 C语言中没有用于输出的语句 只能通过标准库函数的调用来完成数据的输出任务 库函数的一般调用格式为 函数名 参数1 参数2 参数n printf函数 例 printf Howareyou 输出 Howareyou 例 inta 100 printf variablea d a 输出 variablea 100 d 用于显示有符号整型数据 如int short型数据 u 用于显示无符号整型数据 如unsignedint unsignedshort型数据 f 用于显示实型数据 如float型数据 c 用于显示字符型数据 如char型数据 s 用于显示字符串数据 格式控制符 例 简单的数据输出 includevoidmain inta b unsignedintu longL charch floatf a 200 b 1 u b L u ch A f 32 17 printf a d t a printf b d n b printf u u t u printf L ld n L printf f f n f printf chis candvalueis d n ch ch printf IloveClanguage rYou n I后有三个空格 在VC下 a 200b 1u 4294967295L 1f 32 169998chisAandvalueis65YouloveClanguage 在BC下 a 200b 1u 65535L 65535f 32 169998chisAandvalueis65YouloveClanguage b的值是 1 在内存中表示为 0 xffff BC下 0 xffffffff VC下 当它赋给u时 由于u是无符号数 因此u的值是65535 BC下 4294967295 VC下 L是有符号长整型 u是无符号整型 在BC下 L占4字节 u占2字节 当把u赋值给L时 L的高2个字节为全0 因u无符号 故L的值为0 x0000ffff 即65535 但在VC下 L和u都占4字节 当把u赋值给L时 L的值为0 xffffffff 即 1 2 4C语言的运算符与表达式 变量用来存放数据 运算符则用来处理数据 用运算符将变量和常量连接起来的符合C语法规则的式子被称为表达式 运算符的分类 单目运算符 只带一个操作数的运算符 如 运算符 双目运算符 带两个操作数的运算符 如 运算符 三目运算符 带三个操作数的运算符 如 运算符 学习运算符时应注意 运算符的功能 该运算符主要用于做什么运算 与运算量关系 要求运算量的个数及运算量的类型 运算符的优先级 表达式中包含多个不同运算符时运算符运算的先后次序 运算符的结合性 同级别运算符的运算顺序 指左结合性还是右结合性 运算结果的类型 表达式运算后最终所得到的值的类型 课堂练习 题目 酒杯A中盛有红酒 酒杯B中盛有白酒 请将两杯中的酒交换 题目 输入两个整数给两个变量赋值 然后将两个变量的值互相交换 1 赋值运算符 赋值表达式 赋值运算符 双目运算符 一般形式 变量 常量或变量或表达式 功能 将右边常量或变量或表达式的值赋给左边变量 例如 intx y z x 20 y x z x y 赋值表达式 定义 由赋值运算符或复合赋值运算符 后面即将介绍 将一个变量和一个表达式连接起来的表达式 称为赋值表达式 一般格式 变量 复合 赋值运算符表达式 赋值表达式的值 被赋值变量的值 例如 a 5 这个赋值表达式 变量a的值 就是它的值 赋值语句 例如 x 8 a b c 5 定义 赋值表达式在其后面加分号就构成了赋值语句 赋值运算符及赋值表达式的使用 多个变量连续赋值 例如 a b c 10 a b c 10 结果 a b c的值都为10 赋值表达式的嵌套 例如 a b 2 c 3 a b 2 c 3 结果 b为2 c为3 a为b c即5 注意 赋值语句 左边必须是变量名或对应某特定内存单元的表达式 后面的章节会遇到这样的表达式 不能是常量或其它表达式 例如 30 a b 2 5 都是错误的 赋值语句中的 表示赋值 不是代数中相等的意思 要表示相等的意思则应用关系运算符 表示 二者切勿混淆 说明 以下赋值语句是否可行 intz z 5 3 z 5 13 z 5 5 2 强制类型转换符 C语言的数据类型是可以相互转换的 转换的方法有两种 一种是自动转换 一种是强制转换 自动转换 例如 inta 2 5 则a的值将是2 而不是2 5 这种自动改变等号右边表达式值的数据类型的操作称为数据类型的自动转换 首先将等号右边的表达式的值转换成 左边的数据类型 然后再赋值给等号左边的变量 1 短长度的数据类型 长长度的数据类型 方法 直接将无符号短长度的数据类型的数据作为长长度的数据类型数据的低位部分 长长度的数据类型数据的高位部分补零 无符号短长度的数据类型 无符号或有符号长长度的数据类型 xx x 无符号短长度的数据类型 0 0 0 高位部分补0 例如 unsignedcharch 0 xfc unsignedinta 0 xff00 假设int数据为16位intb unsignedlongu b ch b的值将是0 x00fcu a u的值将是0 x0000ff00 如果将ch的值赋给 4 问b的值又是多少呢 0 x00fc 2 强制类型转换符 自动转换 1 短长度的数据类型 长长度的数据类型 方法 直接将有符号短长度的数据类型的数据作为长长度的数据类型数据的低位部分 然后将低位部分的最高位 即有符号短长度数据的符号位 向长长度的数据类型数据的高位部分扩展 有符号短长度的数据类型 无符号或有符号长长度的数据类型 zx x 有符号短长度的数据类型 z 符号位向高位部分扩展 z z 符号位 例如 charch 2 inta 2 intb unsignedlongu b ch b的值将是2u a u的值将是0 xfffffffe 2 强制类型转换符 自动转换 2 长长度的数据类型 短长度的数据类型 方法 直接截取长长度的数据类型数据的低位部分 长度为短长度的数据类型的长度 作为短长度数据类型的数据 例如 inta 32768 假设int数据为16位unsignedlongb 0 xffffaa00 charch intc ch a ch的值将是0c b c的值将是0 xaa00 3 长度相同的数据类型转换 方法 数据按照原样复制即可 例如 inta 0 xff00 unsignedintb a b的值将是0 xff00 2 强制类型转换符 强制转换 强制类型转换是通过类型转换运算来实现的 其一般形式为 类型说明符 表达式 功能 把表达式的运算结果强制转换成类型说明符所表示的类型 其中 类型说明符 是强制类型转换符 它的优先级比较高 例 floatx 3 5 y 2 1 z inta a int x y 结果为5z int x y 结果为5 100000z double 3 2 结果为1 000000a int 3 6 结果为3 精度损失问题 注意 在使用强制转换时应注意以下问题 类型说明符和表达式都必须加括号 单个变量可以不加括号 例如 把 int x y 写成 int x y则成了把x转换成int型之后再与y相加了 无论是强制转换或是自动转换 都只是为了本次运算的需要而对变量的数据长度进行的临时性转换 而不改变数据说明时对该变量定义的类型 例如 double a只是将变量a的值转换成一个double型的中间量 其数据类型并未转换成double型 基本算术运算符 结合方向 从左向右优先级 2 3 4 说明 可为单目运算符时 右结合性两整数相除 结果为整数 要求两侧均为整型数据 例 5 2 5 2 0 例 5 2 5 2 1 10 5 1 5 5 2 3 算术运算符 算术表达式 2 2 5 1 1 1 0 课堂练习 1 编写程序 计算两个数的和和差 要求从键盘输入两个数 2 编写程序 计算函数y 2x x 5 的值 其中自变量x的值从键盘输入 3 编写程序 给小学生出1道100以内2个数的加法题 等学生说出自己的答案后 再告诉学生正确的答案 课堂练习 题目 输入一个四位数 反序输出这个数 或输出这个数的千位 百位 十位和个位 课堂练习 一个3位数的个位数立方 十位数立方 百位数立方之和如果等于这个数本身 就称为水仙花数 从键盘输入一个3位的整数 验证它是否为水仙花数 表达式和算术表达式 3 算术运算符 算术表达式 表达式 用运算符和括号将运算对象 常量 变量和函数等 连接起来的 符合 语言语法规则的式子 算术表达式 表达式中的运算符都是算术运算符的表达式 运算符优先级 到目前为止 例 3 5 8 x y 2 1等 自增 自减运算符 作用 使变量值加1或减1种类 前置 i i 先执行i i 1或i i 1 再使用i值 后置i i 先使用i值 再执行i i 1或i 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 4 自增自减运算符 符号运算符 负号运算符 减号 既是一个算术运算符 又是一个负号运算符 负号运算符是单目运算符 例如 a 2 那么 a的值就是 2 负号运算符的优先级比较高 与强制类型转换符是同一个级别 自增 自减运算符注意事项 和 运算符只能用于变量 不能用于常量和表达式 因为 和 蕴含着赋值操作 例如 5 a b 都是非法的表达式 负号运算符 和强制类型转换运算符的优先级相同 当这些运算符连用时 按照从右向左的顺序计算 即具有右结合性 两个 和 之间不能有空格 在表达式中 连续使同一变量进行自增或自减运算时 很容易出错 所以最好避免这种用法 例如 i 是非法的 自增 自减运算 常用于循环语句中 使循环控制变变量加 或减 以及指针变量中 使指针指向下 或上 一个地址 4 自增自减运算符 符号运算符 例 intp i 2 j 3 p i p i p i j p i j p i j p i j p i j p i j p i i p i p i i p i 2 3 5 3 3 4 2 2 4 3 2 4 4 4 8 5 算术运算符中数据类型转换规则 includevoidmain floata b c a 7 2 计算7 2得int型值3 因此a的值为3 0b 7 2 1 0 计算7 2得int型值3 再与1 0相乘 因此b的值为3 0c 1 0 7 2 先计算1 0 7得double型的结果7 0 然后再计算7 0 2 因此c的值是3 5printf a f b f c f a b c a 3 000000 b 3 000000 c 3 500000 6 位运算符 位运算表达式 位运算符 按位与 按位或 按位取反 按位异或 左移 六种 左移 实现将某变量所对应的二进制数往左移位 溢出的最高位被丢掉 空出的低位用零填补 其一般格式为 返回整型值的表达式 返回整型值的表达式 例 inta 3 a 2 将a所对应的二进制数左移两位 该表达式的值为12 2 a 将2所对应的二进制数左移三位 a的值 该表达式的值为16 右移 右移运算实现将某变量所对应的二进制数往右移位 溢出的最低位被丢掉 如果变量是无符号数 空出的高位用零填补 如果变量是有符号数 空出的高位用原来的符号位填补 即负数填1 正数填0 其一般格式为 返回整型值的表达式 返回整型值的表达式 例 inta 8 a 2 将a所对应的二进制数右移两位 该表达式的值为2 例 将short类型数据的高 低位字节互换 includevoidmain shorta 0 xf245 b c b a 8 将a的高8位移到低8位赋值给c c的值为0 xfff2c c a 0 x45f2 位运算之间的优先级 7 逗号运算符 逗号表达式 位运算符 逗号表达式 用逗号连接起来的表达式 其一般形式为 表达式1 表达式2 表达式k 优先级 优先级最低 结合性 左结合性 即逗号表达式的求值顺序是从左向右依此计算用逗号分隔的各表达式的值 逗号表达式的值 最后一个表达式的值就是整个逗号表达式的值 用途 常用于循环for语句中 例如 a 3 b 4 b 例 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 例 includevoidmain intx y 7 floatz 4 x y y 6 y z printf x d n x 运行结果 x 3 8 sizeof运算符 复合运算符 sizeof运算符功能 获取变量和数据类型所占内存大小 字节数 格式 sizeof表达式sizeof 数据类型名或表达式 例 sizeof int 其值为2 在TC2 0或BC3 1下 其值为4 在VC6 0下 sizeof long 其值是4sizeof10L其值也是4unsignedlonga 2 sizeof a 其值也是4 复合赋值运算符 种类 含义 exp1op exp2 exp1 exp1opexp2 定义 将算术运算符 位运算符与赋值运算符组合在一起就构成了复合赋值运算符 复合赋值运算符即包含了算术运算或位运算 又包含了赋值操作 例 a 12 a a a a a 264等价于a a a a a a 例 inta 2 a 4 1 a a a a 3 a 0等价于a a a a a a a a 3 2 5运算符的优先级和结合性 判断表达式0XF0F0 0X1010 0X0A0A 5 2的值 0XF0F0 0X1010 0X0A0A 5 2 2 0X1A1A 0X6868 0XF0F0 0X6060 的优先级最高 的优先级比 高 的优先级比 高 C语言编程习惯 1 一行只放一条语句 2 养成随时给程序加注释的习惯 3 程序的书写要有层次感 该缩进的一定要缩进 4 编写函数时 变量定义部分和函数的执行部分之间增加一空行 或者在程序的执行部分按照完成的功能块增加相应的空行 会增加程序的易读性 5 为变量起有意义的名字 既可以帮助程序员读懂程序 也可以避免变量的重复乱用 导致程序的逻辑错误 6 在运算符和赋值符的两边加上一个空格会增加程序的易读性 本章小结 习题 P70 P731 2 本章所介绍的主要内容是整型数据 实型数据和字符型数据的常量表示法和变量定义格式 以及可以作用于这些数据类型的运算符 虽然本章的内容比较烦杂 学起来也许比较枯燥 但本章的内容是学好C语言的基础 是每个C语言程序员必须熟练掌握的 现在我们一起来回忆一下本章有哪些内容值得我们特别留意和必须深刻领会的呢 变量的含义数据在内存中的表示形式不同类型的数据在内存中的表示范围转义字符有符号数与无符号数的区别数据类型的自动转换与强制类型转换各种运算符 运算符的优先级和结合性
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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