基本数据类型与运算.ppt_第1页
基本数据类型与运算.ppt_第2页
基本数据类型与运算.ppt_第3页
基本数据类型与运算.ppt_第4页
基本数据类型与运算.ppt_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计 第二章基本数据类型与运算 第二章基本数据类型与运算 C的基本数据类型 常量 变量 运算符及表达式 为什么讨论这些知识 通常程序要对数据进行操作处理 处理的对象是数据通过运算符和表达式进行操作 例如 已知圆半径为5cm 计算圆的面积 includemain intr floatarea r 5 area 3 14 r r printf f n area 运算结果是输出圆的面积 78 500000 程序中用到的数据 r area 5 3 14对数据进行的运算 分析 计算机操作处理时 要完成以下工作 在内存中给半径r和运算结果area开辟存储空间 存放它们的值 应该留多大的地方来存放它们的值 数据5 3 14与r area不同 它们是在编写程序时就给出确定的值 在运算过程中不会改变 这样的数计算机怎么处理 对整数5和小数3 14 计算机存放时是否有区别 涉及数据类型的基本知识 数据 计算机程序加工处理的对象数据类型 具有相同性质的数据对象的集合 2 2C的基本数据类型 C的数据类型 短整型short 数据类型决定 1 数据占内存字节数2 数据取值范围3 其上可进行的操作 2 2 1整型数据 注意 数据类型所占字节数随机器硬件和编译器的不同而不同 上表以16位机为例 整型数据输入输出举例 includemain inta b sum printf Pleaseinputtwointegers scanf d d 输入 510输出 Thesumof5and10is15 整型数据输入输出举例 includemain unsignedintm m 65535 printf m d n m printf m u n m 输出结果为 m 1m 65535 按有符号数输出 按无符号数输出 整型数据输入输出举例 includemain inta printf pleaseinput scanf d 运行结果 pleaseinput 1234a 1234 Why 运行结果 pleaseinput 123456a 7616 整型数据输入输出举例 运行结果 pleaseinput 1234a 1234 运行结果 pleaseinput 123456a 7616 整型数据输入输出举例 有趣的结果 可用下图表示 2 1 2实型数据 浮点型 注意 数据类型所占字节数随机器硬件和编译器的不同而不同 上表以16位机为例 实型数据输入输出举例 includemain floata b sum printf Pleaseinputtwodecimals scanf f f 输入 1 510 6输出 Thesumof1 5and10 6is12 1 2 1 3字符类型 注意 不同的编译器处理有所不同 此处以TurboC为例 字符数据输入输出举例 includemain chara b printf Pleaseinputachar scanf c 输入 a输出 TheASCIIvalueofcharais97 TheASCIIvalueofcharAis65 字符数据输入输出举例 计算机中的存储 9 1111111111110111 10 1111111111110110 247 246 include stdio h main chara b a 9 b 10 signedchartype printf c c a b 输出 字符数据输入输出举例 includemain charc1 c2 c1 97 c2 98 printf c c n c1 c2 运行结果 a b includemain charc1 c2 c1 97 c2 98 printf d d n c1 c2 运行结果 97 98 思考如果将例中char改成int 结果如何 如果将c1 97改为c1 97 3 结果如何 如果将c2 98改为c1 98 32 结果如何 字符数据输入输出举例 includemain charc1 c2 c1 97 c2 98 printf d d n c1 c2 printf c c n c1 c2 运行结果 97 98a b 思考如果将例中char改成int 结果如何 如果将c1 97改为c1 97 3 结果如何 如果将c2 98改为c2 98 32 结果如何 int c1 97 3 c2 98 32 运行结果 100 98d b 运行结果 100 66d B 原始运行结果 97 98a b 2 2变量 variable 数据类型变量名 概念 在程序运行过程中其值可以改变的量 变量名 必须使用合法的标识符作变量名不能使用关键字为变量命名三个要素 变量类型 变量名和变量值 内涵 变量名实际代表存储空间地址的一个符号 编写程序时通过变量名来存 取变量值 定义格式 决定分配字节数和数的表示范围 合法标识符 2 2变量 例如 inta b 5 charc floats 例如 inta 1 b 3 c inta 1 b 3 c 1 3 a b c 编译程序根据变量定义为其分配指定字节的内存单元 随机值 2 2变量 定义位置 置于函数的开头 而且必须位于所有的执行语句之前 使用方法 必须先定义 再使用 变量初始化 允许在定义变量的时对变量赋初值 表示定义变量并对变量存储单元赋值 2 2变量 main inta b 2 a 1 floatdata data a b 1 2 printf data f n data error syntaxerror missing before type error data undeclaredidentifier 标识符的命名规则 标识符 identifier 是用来标识变量 常量 函数等的字符序列 命名规则 只能由字母 数字 下划线组成 且开头必须是字母或下划线 大小写敏感 不能使用关键字 命名原则 见名知意 2 3常量 constant 1 常量在程序运行过程中 其值不能改变的量称为常量 常量可分为 符号常量 用标识符 identifier 代表常量 定义格式为 标识符一般用大写字母是宏定义预处理命令 不是C语句直接常量 即具体的常数 如5 4 6 a 等 整型常量实型常量 字符常量字符串常量 definePI3 1416 2 3 1符号常量 符号常量 用标识符 identifier 代表常量 标识符一般用大写字母是宏定义预处理命令 不是C语句 include definePI3 14main intr 2 floats l l 2 PI r s PI r r printf l f s f n l s 运行结果 l 12 560000 s 12 560000 编译前系统进行替换 2 3 1符号常量 include definePI3 14main intr 2 floats l l 2 PI r s PI r r printf l f s f n l s 一般用大写字母是宏定义预处理命令 不是C语句 没有 编译时先由系统替换为它所代表的常量 再进行编译虽然是用标识符来表示标识 但本质是常量 具有常量值不能改变的性质 2 3 2整型常量 2 3 2整型常量 includemain inta b c a 123 b 0123 c 0 x123 printf a d b d c d n a b c 运行结果 a 123 b 83 c 291 2 3 2整型常量 例30000为int型65536为longint型 整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L 认为它是longint型常量 长整型示例 129L 129ul 0X1FFLU 2 3 3实型常量 实型常量的类型默认double型在实型常量后加字母f或F 认为它是float型例如 3 5f 1e2F 例如 e 5 1 2E 3 5 1e 2 3 4字符及字符串常量 ASCII 2 3 4转义字符及其含义 000 377 x00 xFF main printf 101 x42C n printf Isay Howareyou n printf CProgram n printf Turbo C n 输出 ABCIsay Howareyou CProgram Turbo C main printf Y b n 2 3 4转义字符举例 输出 屏幕显示 打印机输出 main inta b c a 1 b 2 c 3 printf t d n d d n d d t b d n a b c a b c 输出 123456789012345123123 2 3 4转义字符举例 什么时候要使用转义字符 注意 使用转义字符时 后的八进制或十六进制数不应大于char类型所允许的范围 C程序中需要实现以下情况时 实现某些特写打印或显示动作时打印或显示以下三个字符时 斜杠 双引号 单引号 打印或显示ASCII表中非键盘字符时 printf 123 t56 a n printf Thedirectoryis E Turboc n printf Look 16and x15 n 什么时候要使用转义字符 includemain printf 123 t56 a n printf ThedirectoryofTC exeis E Turboc n printf Look 16and x15 n 运行结果 12356ThedirectoryofTC exeis E Turboc Look and 2 3 4字符串常量 定义 用双引号 括起来的字符序列长度 所包含的字符个数存储方式 每个字符串尾系统自动加一个 0 作为字符串结束标志 不必输入且并不输出 字符常量与字符串常量不同 例 字符串 hello 在内存中 例 空串 在内存中 例 charch ch A 例 charch ch A 例 字符常量 a 例 字符串常量 a 字符数据输入输出举例 includemain charc1 a c2 c2 98 printf d d n c1 c2 printf c c n c1 c2 运行结果 97 98a b includemain charc1 a c2 c2 98 printf d d n c1 c2 printf c c n c1 c2 VC下运行结果 44 98 b warning initializing char differsinlevelsofindirectionfrom char 2 字符数据输入输出举例 includemain charc1 a c2 c2 98 printf d d n c1 c2 printf c c n c1 c2 VC下运行结果 44 98 b 思考若让c1分别等于 U ABC A 结果如何 Turboc下运行结果 108 98 b 字符数据输入输出举例 includemain charc1 10 zhangsan c2 c2 98 printf s n c1 printf c n c2 注意 用char定义的字符变量只能接受字符常量 而不能接受字符串常量 C语言中无字符串变量 运行结果 zhangsanb 2 4运算符与表达式 运算符的学习方法 运算符功能与运算量关系要求运算量个数 单目 双目 三目要求运算量类型运算符优先级别 同一个表达式中不同运算符进行运算时的先后次序结合方向 左结合性与右结合性 当一个运算对象两侧的运算符的优先级别相同 则按规定的结合方向处理 结果的类型 基本概念 表达式与语句 a 3 b 4 表达式 由变量 常量以及运算符按照语法规则组成的序列 表达式的特点是能够求值 例如 a b c d语句 特点是以 结束 可产生执行代码 1 表达式语句 如 y x 3 2 空语句 如 3 函数调用语句 如 printf d 4 复合语句 如 5 控制语句 如 if while等 一 算术运算符和算术表达式 includemain inta floatb a 1 2 b 1 0 2printf na d b f n a b 输出 a 0 b 0 500000 注意 两整数相除 结果为整数 一 算术运算符和算术表达式 2 求模运算符号 结合方向 从左向右说明 要求两侧均为整型数据 例 5 2 5 2 1 10 5 1 5 5 2 1 1 1 0 一 算术运算符和算术表达式 3 自增加 自减少运算符 作用 使变量值加1或减1 常用于循环语句中种类 前置 形式如 i i 先执行i 1或i 1 再使用i值 后置 形式如i i 先使用i值 再执行i 1或i 1 注意 只能用于变量 不能用于常量和表达式 一 算术运算符和算术表达式 main inti 3 j 10 m n p q m i n i p j q j printf i d m d n d n i m n printf j d p d q d n j p q 运行结果为 i 5 m 4 n 4j 8 p 9 q 9 i i j j 运行结果为 i 5 m n j 8 p q 若对某变量自加 自减而不赋值 结果都使该变量自身 1 若某变量自加 自减的同时还参加其它运算 则前缀运算是先变化后使用后缀运算是先使用后变化 一 算术运算符和算术表达式 main inti 3 j 10 m n p q m i 1 n i 1 p j 1 q j 1 printf i d m d n d n i m n printf j d p d q d n j p q 运行结果为 i 5 m 3 n 3j 8 p 10 q 8 includemain inti 3 j 3 m n m i i i n j j j printf m d n d i d j d m n i j 注 该例在不同的系统中 得到结果有所不同 m 3 3 3 9 i i 1 4 i i 1 5 i i 1 6 j j 1 4 j j 1 5 j j 1 6 n 6 6 6 18 例 多个自增 自减运算符的使用 Tuboc下运行结果 m 9 n 18 i 6 j 6 VC下运行结果 m 9 n 16 i 6 j 6 includemain inti 3 m n m i i i i 3 n i i i printf i d m d n d n i m n Tuboc下运行结果 i 6 m 15 n 30 注 该例在不同的系统中 得到结果有所不同 VC下运行结果 i 6 m 13 n 30 例 多个自增 自减运算符的使用 includemain inta 1 printf a d a d a d a a a 运行结果为 a 1 a 1 a 1 a a a printf a d a d a d 1 1 1 表达式值为1 a 0 a 1 表达式值为1 表达式值为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 j 4 输出4 j 4 输出3 c 20 a 4 c 15 a 4 说明 和 的运算对象只能是变量 或运算结果是变量的表达式 不能是常量 或运算结果是数值的表达式 例如 5 a 2 不合法 具有右结合性 结合方向为从右到左 例如 a 等价于 a 在有 和 的表达式中 尽量不要使用难于理解和容易出错的表达方式 尤其是具有二义性的表达式 inti 3 m i i i inti 3 a i b i c i c a b c 练习 a 3 b 7 m a b 则m 10 a 3 b 7n a a a 3 b 7 c a a n c 则n 7 二 赋值运算符和表达式 1 基本的赋值运算符 格式 变量 表达式结合方向 从右向左 优先级14级 次最低 作用 将数据 常量或表达式 赋给一个变量注意 左侧必须是变量 不能是常量或表达式转换规则 使赋值号右边表达式值自动转换成其左边变量的类型 赋值号与数学中的等号含义不同 n t 2 sa b 15 a b b c 10a b b c 10 数学中a b等价于b aC语言中a b不等价于b a inta a 7 99999 a 7 例a 3 d func c d 2 二 赋值运算符和表达式 includemain inta a 10 a a 3 a 3 10 a 3 8 5 5 error leftoperandmustbel valueerror leftoperandmustbel valueerror leftoperandmustbel value 二 赋值运算符和表达式 例 a b c 5 a b 5 a 5 c 6 a b 4 c 6 a b 10 c 2 表达式值为5 a b c值为5 表达式值为5 b 5 a 5 表达式值11 c 6 a 11 表达式值10 a 10 b 4 c 6 表达式值5 a 5 b 10 c 2 二 赋值运算符和表达式 main inti 5 floata 35 15 b doublec 123456789 456123 chard B printf i d a f c f d c n i a c d b i i a a c d i printf i d a f b f d c n i a b d 运行结果 i 5 a 35 150002 c 123456789 456123 d Bi 35 a 123456792 000000 b 5 000000 d 二 赋值运算符和表达式 2 复合的赋值运算符 算术运算相关 位运算相关 二 赋值运算符和表达式 例 设a 3 则 a 5 表达式值为8 a 8 例 a 12 a a a a 等价于 b a a 144 c a b 132 a c d a c 132 132 264 a d 264 例 inta 2 a 4 1 等价于 a a 3 2 3 2 二 赋值运算符和表达式 main inta 2 b 3 c 4 d 5 x a b c b c b printf d d d d n a b c 2 a c d a printf x d n x a b c d 运行结果为 14 2 144 5x 165 关系运算符 结合方向 自左向右优先级别 关系表达式 a b取值 逻辑值1 真 或0 假 三 关系运算符和表达式 课堂练习 已知整型变量a 3 b 2 c 1 d f 求以下表达式的值a b a b cb cbf a b c 表达式值1 表达式值1 表达式值0 d 1 f 0 例若a 0 b 0 5 x 0 3 则a x b 例5 2 7 8在C中是允许的 例inti 1 j 7 a a i j 4 0 例 a 0 A 100 A a 关系运算的特殊应用 结果为1 结果为0 结果为1 结果为a 2 结果为0 结果为0 注意 应避免对实数作相等或不等的判断如1 0 3 0 3 0 1 0可通过绝对误差 或相对误差 的形式给出 例如写为 fabs 1 0 3 0 3 0 1 0 1e 6 关系运算符注意 实数比较 注意 与数学表达式的区别intx 50 100 x 3 结果为0 注意区分 与 关系运算符注意 符号区别 main inta 0 b 1 if a b printf aequaltob elseprintf anotequaltob 结果 aequaltob原因 将b的值赋给a a 1 逻辑运算符种类 逻辑运算真值表 四 逻辑运算符和表达式 例ab x ya b x y a a b 优先级 结合方向 a x x b a b x y a b x y a a b 逻辑表达式C语言中运算量 0 表示 假 非0 表示 真 运算结果 0 表示 假 1 表示 真逻辑表达式求解时 并非所有的逻辑运算符都被执行 只有在必须执行下一个逻辑运算符才能求出表达式的解时 才执行该运算符 举例 a m a b n c d 结果m 0 n 1 举例 intx 1 执行了 x x x后x的值是 a 10 b 20 c 30 a b a a b c a b 1 19 0 intx 1 执行了 x x x后 x的值是 1 举例 intx 1 执行了 x x x后 x的值是 2 intx 1 执行了 x x x后 x的值是 1 x x x intx 1 y 1 z 1 t t x y zx的值是 y的值是 z的值是 t的值是 2 x y z 1 1 1 x x x 例如 编程判断任一给定年份是否闰年 符合以下条件的年份为闰年 能被4整除但不能被100整除 能被400整除 includemain intyear printf Pleaseinputyear scanf d 条件运算符格式 逻辑表达式 Exp1 Exp2 取值 逻辑表达式为True 取值Exp1 逻辑表达式为False 取值Exp2 结合方向 自右向左a b a c d c d a b a c d c d 五 条件运算符和表达式 max a b a b 求a b的最大值 五 条件运算符和表达式 intm1 5 m2 3 m1 m2 m1 1 m2 1 m1 m2 intx 1 y 2 z z x y x y x y z 1 3 1 3 2 if a b max a elsemax b 六 逗号运算符和表达式 inta b 5 x a 3 6 3 printf x d x a 1 y 5 表达式值为18 a 3 输出结果 定义整型变量a b且b初始化为5 变量x 5 a 1 y 5 x 5 逗号运算符 格式 表达式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 六 逗号运算符和表达式 includemain intx a x a 3 5 a 4 a 5 printf x d a d n x a includemain intx a x a 3 5 a 4 a 5 printf x d a d n x a 运行结果 x 20 a 15 运行结果 x 60 a 15 七 数据类型长度运算符 运算符 sizeof格式 sizeof 类型说明符 数组名

温馨提示

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

评论

0/150

提交评论