基本数据类型及运算.ppt

上传人:tia****nde 文档编号:6620108 上传时间:2020-03-01 格式:PPT 页数:58 大小:1.26MB
返回 下载 相关 举报
基本数据类型及运算.ppt_第1页
第1页 / 共58页
基本数据类型及运算.ppt_第2页
第2页 / 共58页
基本数据类型及运算.ppt_第3页
第3页 / 共58页
点击查看更多>>
资源描述
第二章基本数据类型及运算 数据描述数据类型常量变量类型转换运算符与表达式数据输入与输出 C数据类型 基本类型 构造类型 指针类型 空类型void 自定义类型typedef 数值类型 字符类型char 整型 实型 单精度型float 双精度型double 短整型short 长整型long 整型int 数组 结构struct 联合union 数据类型决定 1 数据占内存字节数2 数据取值范围3 允许的操作 基本数据类型例 类型 符号 关键字 数的表示范围 所占位数 整型 字符型 实型 有 无 需要注意的是 标准C没有具体规定以上各整型数据所占内存字节数 只要求long型数据长度不短于int型 short型不长于int型 具体如何实现 由各计算机系统和编译系统决定 如 在VisualC 6 0中 一个short型数据占用2个字节的内存空间 一个int型数据和一个long型数据分别占用4个字节的内存空间 一般用大写字母是宏定义预处理命令 不是C语句直接常量 整型常量实型常量字符常量字符串常量 常量定义 程序运行时其值不能改变的量 即常数 分类 符号常量 用标识符代表常定义格式 define符号常量常量 整型常量 整常数 三种形式 十进制整数 由数字0 9和正负号表示 如12 456 0八进制整数 由数字0开头 后跟数字0 7表示 如0123 011十六进制整数 由0 x开头 后跟0 9 a f A F表示 如0 x123 0 xff 例12与12L 例30000为int型65536为longint型 整型常量的类型根据其值所在范围确定其数据类型常量后加字母l或L 就成为longint型常量 问题 0123 100 x123 100 xff 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型在实型常量后加字母l或L 为longdouble型 字符常量定义 用单引号括起来的单个普通字符或转义字符 字符常量的值 该字符的ASCII码值 例 A 101 x41 65 A 65 a 97 0 48 n 10 转义字符 反斜线后面跟一个字符或一个代码值表示 转义字符举例 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 作为字符串结束标志 例 charch ch A 变量概念 其值可以改变的量变量名与变量值变量定义的一般格式 数据类型变量1 变量2 变量n 变量初始化 定义时赋初值 决定分配字节数和数的表示范围 合法标识符 变量的使用 先定义 后使用 例1intstudent stadent 19 Undefinedsymbol statent infunctionmain 变量定义位置 一般放在函数或复合语句开头 整型变量占字节数随机器不同而不同 一般占一个机器字所占字节数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 没有字符串变量 用字符数组存放 例 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 常量小结 定义 程序运行时其值不能改变的量 即常数 符号常量 用标识符代表常量定义格式 define符号常量常量是宏定义预处理命令 不是C语句常量后缀L或l长整型U或u无符号数F或f浮点数常量类型整数 长整数 无符号数 浮点数 字符 字符串 符号常数 转义字符 常量小结 续 整型常量十进制整数 由数字0 9和正负号表示八进制整数 由数字0开头 后跟数字0 7表示十六进制整数 由0 x开头 后跟0 9 a f A F表示实型常量十进制数形式 必须有小数点 如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型字符常量 用单引号括起来的单个普通字符或转义字符字符串常量 用双引号 括起来的字符序列 每个字符串尾自动加一个 0 作为字符串结束标志 变量小结 概念 其值可以改变的量变量名与变量值变量定义的一般格式 数据类型变量1 变量2 变量n 变量初始化 定义时赋初值变量的使用 先定义 后使用变量定义位置 一般放在函数开头注意 没有字符串变量 用字符数组存放 不同类型数据间的转换 隐式转换什么情况下发生运算转换 不同类型数据混合运算时赋值转换 把一个值赋给与其类型不同的变量时函数调用转换 实参与形参类型不一致时转换运算转换规则 不同类型数据运算时先自动转换成同一类型显式转换 强制转换 一般形式 类型名 表达式说明 强制转换得到所需类型 原变量类型不变 混合运算隐式转换规则 例 int x y int x y double 3 2 例main floatx inti x 3 6 i int x printf x f i d x i 结果 x 3 600000 i 3 精度损失问题 显式转换举例 C运算符 1 算术运算符 类型 2 赋值运算符 及其扩展赋值运算符3 关系运算符 6 条件运算符 7 逗号运算符 8 指针运算符 9 求字节数运算符sizeof10 分量运算符 11 下标运算符 12 其它如函数调用运算符 注 有些教材最高优先级是15 有些最高优先级是1 学习运算符应注意 1 掌握运算符的功能 2 搞清运算符与运算量间的关系 要求运算量个数要求运算量类型 3 清楚运算的优先级 4 明确结合方向 在一个运算量的两侧有两个相同优先级别的运算符 则按结合方向顺序处理 5 明白结果的类型 即表达式的类型 算术运算符和表达式 基本算术运算符 结合方向 从左向右优先级 说明 可为单目运算符时 右结合性两整数相除 结果为整数 要求两侧均为整型数据 例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 结合方向 自右向左优先级 注意 的副作用 p 48 49 例 i i i 3 printf d i 3 j 3 printf d d j j 4 3or3 3 例 i i 3 printf d i j 3 printf d d j j 算术运算符和表达式 续 位运算符 位运算是以二进制位 bit 为基本单位进行的运算 语言提供了六种位运算符 按位取反单目 按位与双目 按位或双目 按位异或双目 右移双目不同长度的数据进行位运算 将操作数右端对齐 左端补零 无符号数 或补符号位 有符号数 按位与运算符 0 0 0 1 0 0 0 1 0 1 1 1用途 清零保留某些位 例 inti i 0 x00FF lowbyte i 0 x8000 themosthighbit 按位或运算符 0 0 0 1 0 1 0 1 1 1 1 1用途 置1取指定位值 例 inta 9 b 5 c c a b printf a d b d c d n a b c 9 5 13 按位异或运算符 0 0 0 1 0 1 0 1 1 1 1 0用途 使特定位翻转交换变量值 不用临时变量 例 inta b t t a a b b t needtemporaryvariable a b b a b a b possibilityofoverflow a b b a a b 按位取反运算符 0 1 1 0用途 特定位清零 charc inti c 0 xFD 11111101 i 0 xFFFD 1111111111111101 考虑移植性 可用 c 0 x02i 0 x02 2byteintor4byteint 左移运算符 功能 把 左边的运算数的各二进位全部左移若干位 由 右边的数指定移动的位数 高位丢弃 低位补0 用途 无溢出时 左移1位相当于乘2 但快得多 例 inti 15 00001111 i 2 00111100 60 右移运算符 功能 把 左边的运算数的各二进位全部右移若干位 由 右边的数指定移动的位数 有符号数右移 当为正数时 最高位补0 而为负数时 符号位为1 最高位是补0或是补1取决于编译系统的规定 用途 右移1位相当于除以2 但快得多 unsignedcharc 241 11110001 c 2 00111100 60 241 4 简单赋值运算符符号 格式 变量标识符 表达式作用 将一个数据 常量或表达式 赋给一个变量 复合赋值运算符种类 含义 exp1op exp2 exp1 exp1opexp2 例a 3 d func c d 2 赋值运算符和表达式 说明 结合方向 自右向左优先级 左侧必须是变量 不能是常量或表达式 赋值转换规则 使赋值号右边表达式值自动转换成其左边变量的类型 错误 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 a 264等价于a a a a a a 赋值运算时的类型转换 两侧类型不一致时 要进行类型转换 整 实 截掉小数部分实 单 双精度 整 数值不变 存为浮点整 char 整型低8位 char整型高8位 0或符号位扩展 因机器而不同 longint int 符号位扩展int longint int long低16位longint unsignedint 高位补0整型 字节数相同的 unsigned整型 原样送入 若超过整型表示范围 会出错 unsigned 字节数相同的 非unsigned整型 原样送入 符号位也作为有效数值 Page36 includemain unsigneda intb 1 a b printf u n a 运行结果 65535 例 赋值语句 格式 赋值表达式 赋值语句与赋值表达式的区别 赋值表达式可以包含在其它表达式中 而赋值语句不可 例 if a b 0 t a 不可写为 if a b 0 t a Page38 形式 表达式1 表达式2 表达式n结合性 从左向右优先级 最低逗号表达式的值 等于表达式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 逗号运算符和表达式 计算字节运算符sizeof sizeof是一个单目的编译状态运算符 可计算出变量或类型的字节长度 例 floatf printf d sizeof f printf d sizeof int TurboC输出结果为4和2 使用sizeof可以增强程序的可移植性 使之不受计算机固有的数据类型长度限制 运算符与表达式小结 运算符优先级和结合性一般而言 单目运算符优先级较高 赋值运算符优先级低 算术运算符优先级较高 关系和逻辑运算符优先级较低 多数运算符具有左结合性 单目运算符 三目运算符 赋值运算符具有右结合性 表达式表达式是由运算符连接常量 变量 函数所组成的式子 每个表达式都有一个值和类型 表达式求值按运算符的优先级和结合性所规定的顺序进行 格式 putchar c 参数 c为字符常量 变量或表达式功能 把字符c输出到显示器上返值 正常 返回显示的代码值 出错 返回EOF 1 数据输入与输出 C语言无I O语句 I O操作由函数实现 include一 数据输出字符输出函数 includemain intc chara c 65 a B putchar c putchar n putchar a 运行结果 AB 例 格式 printf 格式控制串 输出表 功能 按指定格式向显示器输出数据返值 正常 返回输出字节数 出错 返回EOF 1 格式输出函数 输出表 要输出的数据 可以没有 多个时以 分隔 格式控制串 包含两种信息格式说明 修饰符 格式字符 用于指定输出格式普通字符或转义序列 原样输出格式字符 十六进制无符号整数 不带符号十进制整数 inta 567 printf d a inta 255 printf x a inta 65 printf o a inta 567 printf u a chara 65 printf c a printf s ABC floata 567 789 printf e a floata 567 789 printf f a floata 567 789 printf g a printf 567 ff 101 567 A ABC 5 677890e 02 567 789000 567 789 说明格式字符除XEG外均应用小写格式字符与输出项个数应相同 按先后顺序一一对应格式字符与输出项类型不一致时 输出可能出错 例main unsignedintu 65535 printf u d n u 输出结果 u 1 例inta 3 b 4 printf d d n a b printf a d b d n a b 输出结果 34a 3 b 4 附加格式说明符 修饰符 例inta 1234 floatf 123 456 charch a printf 8d 2d n a a printf f 8f 8 1f 2f 2e n f f f f f printf 3c n ch 运行 1234 1234结果 123 456000 123 456000 123 5 123 46 1 23e 02 a 例staticchara Hello world printf s n 15s n 10 5s n 2 5s n 3s n a a a a a 运行结果 Hello world Hello world HelloHelloHel 例 inta 1234 floatf 123 456 staticcharc Hello world printf 8d 8d n a a printf 10 2f 10 1f n f f printf 10 5s 10 3s n c c 运行结果 1234 1234 123 46 123 5 Hello Hel 例inta 1234 floatf 123 456 printf 08d n a printf 010 2f n f printf 0 8d n a printf 0 10 2f n f 例inta 123 printf o o X X n a a a a 例longa 65536 printf d 8ld n a a 00001234 0000123 46 000 1234 000 123 56 173 0173 7B 0X7B 0 65536 格式 getchar 功能 从键盘读一字符返值 正常 返回读取的代码值 出错 返回EOF 1 二 数据输入字符输入函数 includemain intc printf Enteracharacter c getchar printf c hex x n c c 运行结果 Enteracharacter A A hex41 格式输入函数 格式 scanf 格式控制串 地址表 功能 按指定格式从键盘读入数据 存入地址表指定的存储单元中 并按回车键结束返值 正常 返回输入数据个数 地址表 变量的地址 常用取地址运算符 格式字符 d i o x u c s f e 例scanf d 输入 10 则a 10 例scanf x 输入 11 则a 17 附加格式说明符 修饰符 例scanf 4d 2d 2d 输入19991015 则1999 y 10 m 15 d 例scanf 3d 4d f 输入12345678765 43 则123 k 8765 43 f 例scanf 2d 3d 2d 输入12 345 67 则12 a 67 b 例scanf 3c 2c 输入abcde 则 a c1 d c2 输入分隔符的指定一般以空格 TAB或回车键作为分隔符其它字符做分隔符 格式串中两个格式符间字符 例scanf d o x 输入123123123 输出a 123 b 83 c 291 例scanf d d d 输入12 30 45 则12 h 30 m 45 s 例scanf d d a b 输入3 4 则3 a 4 b 例scanf a d b d c d 输入a 12 b 24 c 36 说明 用 c 格式符时 空格和转义字符作为有效字符输入 如scanf c c c 若输入a b c 则a c1 c2 b c3 输入数据时 遇以下情况认为该数据结束 遇空格 TAB 回车遇宽度结束遇非法输入 如scanf d c f 若输入1234a123o 26 则1234 a a b 123 c 例intx charch scanf d 执行 123 输出 x 123 ch 10 注意输入函数留下的 垃圾 程序举例 include includemain floata b c s area scanf f f f 例 输入三角形边长 求面积 输入 3 4 6 输出 a 3 00 b 4 00 c 6 00s 6 50area 5 33 例 从键盘输入大写字母 输出大写和小写字母 includemain charc1 c2 c1 getchar printf c d n c1 c1 c2 c1 32 printf c d n c2 c2 输入 A 输出 A 65a 97 输入和输出小结 语言中没有提供专门的输入输出语句 所有的输入输出都是由调用标准库函数中的输入输出函数来实现的 scanf和getchar函数是输入函数 接收来自键盘的输入数据 scanf是格式输入函数 可按指定的格式输入任意类型数据 getchar函数是字符输入函数 只能接收单个字符 printf和putchar函数是输出函数 向显示器屏幕输出数据 printf是格式输出函数 可按指定的格式显示任意类型的数据 putchar是字符显示函数 只能显示单个字符
展开阅读全文
相关资源
相关搜索

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


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

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


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