c语言第2章c语言基础.ppt

上传人:max****ui 文档编号:6334281 上传时间:2020-02-23 格式:PPT 页数:61 大小:755.50KB
返回 下载 相关 举报
c语言第2章c语言基础.ppt_第1页
第1页 / 共61页
c语言第2章c语言基础.ppt_第2页
第2页 / 共61页
c语言第2章c语言基础.ppt_第3页
第3页 / 共61页
点击查看更多>>
资源描述
本章要求 理解变量与常量的概念 掌握变量的定义和使用 掌握常用数据类型的数据在内存中的存放形式 掌握算术运算符 关系运算符 逻辑运算符 赋值运算 逗号运算规则及优先级别 掌握各种表达式的运算及简单的运用 本章难点 各种数据类型的数据在内存中的存放形式 本章重点 变量与常量的概念 各种表达式的运算 第2章C语言基础 第2章基本的程序语句 一 语言的数据类型二 常量三 变量四 运算符与表达式五 数据类型转换 1 语言数据类型概述 一 语言的数据类型 数据的组织形式是数据结构 数据结构的表现形式是数据类型 在程序中表现数据必须指定其数据类型 数据类型决定数据在内存的空间大小 数据的表示形式 数据的取值范围以及可参与运算的种类 C语言的数据类型丰富 可以表示复杂的数据结构 数据类型 基本类型 构造类型 指针类型空类型 一 语言的数据类型 int char float double void C语言中的数据有常量和变量之分 常量是在程序运行过程中 其值不能被改变的量 变量是在程序运行过程中 其值可以被改变的 常量和变量是数据的外在存储形式 数据最终以这两种方式之一出现 但它们都要归属于某种数据类型 变量是在程序中定义的 代表某个存储空间及其所存储的数据 一 语言的数据类型 2 基本数据类型 基本数据类型是构成C语言的数据类型的最基本要素包括 整型 int 实型 float和double 字符型 char 例如 整型数据的取值和取值范围类型说明符数的范围分配字节数int 32768 327672字节shortint short 32768 327672字节long 2147483648 21474836474字节unsignedint unsigned0 655352字节unsignedshortint0 655352字节unsignedlongint0 42949672954字节 注意 VisualC 6 0中 基本整型与长整型所占字节数及表示范围对应相同 一 语言的数据类型 二 常量 一 数值常量1 整型常量在 语言中 使用的整常数有八进制 十六进制和十进制三种 1 十进制整常数 237 56801627 2 八进制整常数八进制整常数必须以0开头 即以0作为八进制数的前缀 015 十进制为13 0101 十进制为65 079和08001 不合法的八进制数 定义 在程序运行时 其值不能被改变的量叫常量 如5 3 14159 a 等 二 常量 3 十六进制整数的前缀为0X 0X2A 十进制为42 0XA0 十进制为160 0XFFFF 十进制为65535 以下各数是不合法的十六进制整常数 5A0X3H 若要表示长整型 long 整数 在数的最后加表示长整型的后缀修饰符号字母 l 如 1250125l0X125l等价于125 125 8 125 16 思考 25和25l的区别 说明 前者用2字节存储 后者则使用4个字节存储 二 实型常量实型也称为浮点型 实型常量也称为实数或者浮点数 在 语言中 实数只采用十进制 它有两种形式 小数形式与指数形式 1 小数形式由数码0 9和小数点组成 例如 0 123 123123 0 123等均为合法的实数 2 指数形式由十进制数 加阶码标志 e 或 E 以及阶码组成 其一般形式为aEn值为a 10 n 二 常量 二 常量 例如 1 25E 31 25e 31 25 103 1250 0 说明 当幂为正数时 正号可以省略 即1 25E 3等价于1 25E3 同一个实数可以有多种表示形式 例如 1250 0可以用0 0125E 5 0 125E 4 1 25E 3 12 5E 2 125E 1 字母e 或E 之前必须有数字 且e后面指数必须为整数 aEn 二 常量 三 字符常量 字符常量是用单引号括起来的一个字符 例如 a b 都是合法字符常量 在 语言中 字符常量有以下特点 1 字符常量只能用单引号括起来 不能用双引号或其它括号 2 字符常量只能是单个字符 不能是字符串 3 字符可以是字符集中任意字符 但数字被定义为字符型之后就不能参与数值运算 如 5 和5是不同的 二 常量 四 字符串常量 C语言中的字符串常量是由一对双引号括起来的字符序列 每个字符串最后有一结束标志 0 例如 ABC A 123lkdf 字符串常量在内存中存储时 系统自动在字符串的末尾加一个 串结束标志 因此在程序中 长度为n个字符的字符串常量 在内存中占有n 1个字节的存储空间 二 常量 例如 a 与 a 是C语言中两种完全不同类型的数据 a a 0 a 与 a 在内存的存储形式 注意 不要将字符常量和字符串常量混淆 例如 字符串 ABCDEF 有6个字符 存储于内存中时 共占7个字节 最后一个字节为 0 五 转义字符转义字符是一种特殊的字符常量 转义字符以反斜线 开头 后跟一个或几个字符 转义字符主要用来表示那些用一般字符不便于表示的控制代码 常用的转义字符及其含义 p12 转义字符转义字符的意义 n回车换行 t横向跳到下一制表位置 v竖向跳格 b退格 r回车 f走纸换页 反斜线符 单引号符 a鸣铃 ddd三位八进制数的值所代表的ASCII字符 xhh两位十六进制数所代表的ASCII字符 二 常量 例 main printf abc tde bfghi n printf a 65b 101c x41 n 输出结果 a b c d e fghi a 65b Ac A 二 常量 六 符号常量 符号常量 可以使用一个符号表示一个多次常用的常量C语言中使用命令 define来定义 格式 define符号常量名标识符常数表达式优点 符号常量使程序易于阅读和修改 例如 一个程序中多处用到学生人数60 当有学生人数改变为65 修改这个程序很困难 而使用符号常量 只要将 defineNUM60改为 defineNUM65 就可以了 无分号 二 常量 例 求一个半径为r的球的体积和表面积的C程序 definePI3 14159 定义PI为符号常量 值为3 1415 voidmain floatv s r scanf f 说明 1 符号常量名常常用大写字母 变量名用小写字母 2 符号常量不能在其作用域范围内重新赋值 二 常量 三 变量 一 变量的定义 简单定义 在程序运行时 其值能被改变的量叫变量变量包括 一个名字和相应的数据类型通过名字来引用一个变量 而数据类型则决定了该变量的存储方式和在内存中占据存储单元的大小 说明 变量名和变量值这两个概念的区别定义 intx 20 C语言中使用的变量都要作类型强制定义 即要求 先定义 后使用 的原则 其目的 1 保证程序中变量名使用的正确性2 编译程序为其分配相应的储存单元3 保证运算的合法性 定义形式 类型说明符变量名列表 三 变量 实型变量 1 单精度实型 floata 4个字节2 双精度实型 doublea 8个字节 charch 定义ch为字符型变量 inti j 定义i j为基本整型变量 longk n m 定义k n m为长整型变量 floatx y z 定义x y z单精度实型变量 doublesum t 定义sum t双精度实型变量 三 变量 二 变量的赋初值 C语言中 当定义一个变量后 系统只是按定义的数据类型分配其相应的存储单元 并不对其单元初始化 如果在赋初值之前直接使用该变量 则是一个不定值 例如 voidmain intk printf k d n k 程序运行 输出k的值就是一个无意义的不定值 并在不同系统环境下运行的结果也可能完全不同 三 变量 赋初值的一般形式为 1 类型说明符变量1 值1 变量2 值2 2 类型说明符变量1 变量2 变量3 变量1 值1 变量2 值2 例如 inta 10 b 10 c 10 等价于inta b c a 10 b 10 c 10 注意 在说明中不允许连续赋值 但在变量定义后 可以使用连续赋值语句初始化 三 变量 如 inta b c 1 是不合法的 inta b c a b c 1 是合法的 1 一个字符变量存放字符常量 在内存中是以ASCII码的形式存储的 字符数据在内存中的存储形式及其使用方法 2 字符型数据与整型数据的关系 二者可以进行转换 1 一个字符数据既可以字符形式输出 也可以整数据形式输出 2 二者可以互相赋值 3 字符型数据可以进行算术运算 三 变量 例1main charc1 c2 inti c1 65 c2 66 i C printf c c n c1 c2 printf d d n c1 c2 printf d c i i 例2main charch inti ch A ch ch 32 i ch printf dis c n i ch printf cis d n ch ch 三 变量 四 运算符与表达式 C语言中的运算符 语言中运算符和表达式数量之多 在高级语言中是少见的 正是丰富的运算符和表达式使 语言功能十分完善 这也是C语言的主要特点之一 运算符的种类C语言的运算符共有十三类 常用运算符及表达式 算术运算符根据运算符的性质分类逻辑运算符关系运算符赋值运算符位运算单目运算符根据所需的运算对象即操作数的个数分类双目运算符三目运算符 四 运算符与表达式 运算 对数据的加工 基本操作 运算符 描述运算的符号 即操作符 运算量 操作数 被运算的对象 数据 表达式 由运算符和运算量组成的式子 语言的运算符不仅具有不同的优先级 而且还有一个特点 就是它的结合性 因此 在表达式中 各运算量参与运算的先后顺序不仅要遵守运算符优先级的规定 还要受运算符结合性的制约 以便确定是自左向右进行运算还是自右向左进行运算 四 运算符与表达式 一 算术运算符与算术表达式 1 C语言的基本算术运算符 加法 减法 乘法 除法 求余 其中 求余 运算要求两个运算量均为int当 被用于整数或字符时 结果取整例如 5 2结果 2 1 2的结果 0 1 关于 的说明 运算符 两边的操作数必须为整数结果为两操作数整除后的余数余数的符号与被除数符号相同例如 12 7 5 12 7 52 关于 的说明 如果两操作数均为整数 则其结果为整数如果其中一个操作数为实型数 则其结果为double型 例如 6 4 16 0 4 1 500000 四 运算符与表达式 运算符为单目运算 要求运算对象只能是变量结合方向 为由右至左 优先级 高于双目运算 可有以下几种形式 i变量i自增1后再参与其它运算 i 变量i参与运算后 i的值再自增1 i变量i自减1后再参与其它运算 i 变量i参与运算后 i的值再自减1 2 自增 自减运算符自增运算符 其功能是使变量的值自增1 自减运算符 其功能是使变量值自减1 四 运算符与表达式 例2 3 main intx y x 10 y x printf d d x y 程序运行后 输出结是 11 11 思考 如果将程序的第2行改为 x 10 y x 结果如何 四 运算符与表达式 注意 1 自增自减运算符的优先级较高 和单目运算符相同 其结合方向是 自右向左 右结合性 例如 表达式 i 由于 和 优先级相同 均为右结合性 因此相当于 i 2 尽管自增自减运算符给程序员带来了方便 但同时也带来了副作用 例如 printf d d n i i 在不同的编译环境下结果有可能不同 若i的值为3 则结果可能是 3 3 VisualC 6 0 也可能是 4 3 TC 四 运算符与表达式 四 运算符与表达式 注意 3 例如 i jC编译在处理时尽可能多地自左而右将若干个字符组成一个运算符 在处理标识符和关键字时也按同一原则处理 将解释为 i j 而不是i j 算术表达式 定义 由算术运算符 括弧 内部函数及数据组成的式子 需要掌握的书写原则 1 表达式中的所有运算符和操作数必须并排书写 不能出现上下标 如x2 x2等 和数学中的分数线 2 在C表达式中不能省略乘号 如2ab xy等 3 要注意各种运算符的优先级别 为保持运算顺序 在写C表达式时需要适当添加括号 若要用到库函数 必须按库函数要求书写 四 运算符与表达式 二 关系运算符与关系表达式关系运算符及优先级别比较两个量的运算符称为关系运算符 在 语言中有以下关系运算符 关系运算符的优先级 1 关系运算符 赋值运算符 四 运算符与表达式 关系表达式的一般形式为 表达式关系运算符表达式关系表达式的值是 关系成立为 真 不成立则为 假 C语言中用 1 表示 真 0 表示 假 例如 a b c dx 3 2 a 1 c i 5 j k 1都是合法的关系表达式 四 运算符与表达式 例如 当a 5 b 4 c 3时ac a c b 又如 a 3 b 5 又如 当a 5 b 4时a a 3 b 假 0 真 1 假 0 6 四 运算符与表达式 练习 三 逻辑运算符与逻辑表达式 语言中提供了三种逻辑运算符 非运算 与运算 或运算 四 运算符与表达式 设a b均为逻辑值 运算结果 a当a为真时 结果为假 当a为假时 结果为真a b当且仅当a b都为真时 结果为真a b当且仅当a b都为假时 结果为假 运算符 和或运算符 均为双目运算符 具有左结合性 非运算符 为单目运算符 具有右结合性 1 逻辑运算符优先级表示如下 而且 低于关系运算符 高于算术运算符 四 运算符与表达式 按照运算符的优先顺序可以得出 a b c d b c dc x y b a b c d b c d a a b c x y b 2 逻辑运算的值 逻辑运算的值也为 真 和 假 两种 用 1 和 0 来表示 四 运算符与表达式 3 关于逻辑运算的说明表达式a b c的求解过程只有a为真时 才判别b的值 只有a和b均为真时 才判别c的值 只要a为假 就不再判别b和c的值 直接求得表达式的值为假 表达式a b c的求解过程只要a为真 就不再判别b和c的值 直接求得表达式的值为真 只有a为假时 才判别b的值 只有a和b均为假时 才判别c的值 四 运算符与表达式 如 设a是一合法表达式0 a1 a 四 赋值运算符与赋值表达式 1 简单赋值运算符与表达式其一般形式为 变量 表达式功能 计算表达式的值再赋予左边的变量 整个赋值表达式的值为 左边变量的值 例如 x a bw sin a sin b 赋值运算符的结合方向 由右至左因此a b c 5可理解为 a b c 5 优先级 低于条件运算符 高于逗号运算符 在赋值表达式的未尾加上分号 就构成为赋值语句 四 运算符与表达式 说明 如果赋值运算符两边的数据类型不相同 系统将自动进行类型转换 即把赋值号右边的类型换成左边的类型 具体转换规定如下 1 实型赋予整型 舍去小数部分 2 整型赋予实型 数值不变 但将以浮点形式存放 即增加小数部分 小数部分的值为0 3 字符型赋予整型 由于字符型为一个字节 整型为二个字节 故将字符的ASCII码值放到整型量的低八位中 高八位为0 4 整型赋予字符型 只把低八位赋予字符量 四 运算符与表达式 例 用程序验证不同类型变量的赋值的类型转换 voidmain inta b c 322 floatx y 3 14 charch1 a ch2 a y x c b ch1 ch2 c printf d f d c a x b ch2 程序运行结果是 a 3 x 322 000000 b 97 ch2 B 四 运算符与表达式 在赋值符 之前加上其它二目运算符可构成复合赋值符 如 优先级别 仅高于逗号 运算符例如 a 5等价于a a 5x y 7等价于x x y 7 r p等价于r r p复合赋值符的优先级和结合方向与赋值运算符 相同 2 复合赋值运算符与表达式 四 运算符与表达式 五 逗号运算符和逗号表达式 在 语言中逗号 也是一种运算符 称为逗号运算符 其功能是把两个表达式连接起来组成一个表达式 称为逗号表达式 其一般形式为 表达式1 表达式2 表达式n其求值过程是分别求表达式1 表达式2 表达式n的值 并以最后一个表达式n的值作为整个逗号表达式的值 四 运算符与表达式 例题2 5main inta 2 b 4 c 6 x y z y x a b b c z y x a b b c printf y d x d z d y x z 结果 y 6 x 6 z 10 四 运算符与表达式 运算规则 四 运算符与表达式 五 位运算 与或异或取反 其运算过程为 56 00111000 56 00111000 199 11000111 1 按位取反 格式 x 四 运算符与表达式 例2 2 分析下面程序的运行结果main unsignedcharx 56 y y x printf d n y 2 按位与 格式 x y 四 运算符与表达式 例2 3 分析下面程序的运行结果main unsignedcharx 56 y 157 z z x 其运算过程为 3 按位或 格式 x y 例2 4 分析下面程序的运行结果main unsignedcharx 56 y 157 z z x y printf d n z 四 运算符与表达式 4 按位异或 格式 x y 四 运算符与表达式 例2 5 分析下面程序的运行结果 main unsignedcharx 56 y 157 z z x y printf d n z 5 左位移 格式 x 要位移的位数 功能 把操作对象的二进制数向左移动指定的位 并在右面补上相应的0 高位溢出 示例 如x 00001111 y x 2 则y 00111100 注意 左移会引起数据的变化 具体地说 左移一位相当于对原来的数值乘以2 左移n位相当于对原来的数值乘以2n 但此结论只适用于该数左移被溢出舍弃的高位中不包含1的情况 四 运算符与表达式 6 右位移 格式 x 要位移的位数 功能 把操作对象的二进制数向右移动指定的位 移出的低位舍弃 高位则 1 对无符号数和有符号中的正数 补0 2 有符号数中的负数 取决于所使用的系统 补0的称为 逻辑右移 补1的称为 算术右移 TurboC和其它一些C编译采用的是算术右移 示例 如x 01010001 y x 2 则y 00010100 注意 右移会引起数据的变化 具体说 右移一位相当于对原来的数值除以2 右移n位相当于对原来的数值除以2n 但此结论只适用于该数右移被溢出舍弃的低位中不包含1的情况 四 运算符与表达式 说明 1 复合赋值运算符除按位取反运算外 其余5个位运算符均可与赋值运算符一起 构成复合赋值运算符 a 2相当于a a 2 2 不同长度数据间的位运算 低字节对齐 短数的高字节按最高位补位 对无符号数和有符号中的正数 补0 有符号数中的负数 补1 四 运算符与表达式 位运算应用 四 运算符与表达式 清零取数要用与 某位置一可用或若要取反和交换 轻轻松松用异或 课后填空4567 五 数据类型转换 1 类型自动转换 图中横向向左的箭头表示必定的转换 纵向的箭头表示当运算对象为不同类型时转换的方向 2 赋值类型转换 1 当整型数据赋给浮点型变量时 数值上不发生任何变化 但有效位增加 2 当单 双精度浮点型数据赋给整型变量时 浮点数的小数部分将被舍弃 3 当长度长的整型数据赋给长度短的变量时 将进行截断赋值 4 当整型数据赋给长度相同的变量时 将进行原样赋值 五 数据类型转换 5 将字符型数据赋给整型变量时 由于字符只占一个字节 而整型变量为4个字节 因此将字符数据 8位 放到整型变量低8位中 将unsignedchar型数据赋给unsignedint或int型变量时 高24位补0 将char型数据赋给unsignedint或int型变量时 若字符值最高位为0 则高24位补0 若字符值最高位为1 则高24位全补1 五 数据类型转换 例2 7 强制类型转换的一般形式为 类型名 表达式 注意 1 表达式应该用括号括起来 五 数据类型转换 3 强制类型转换 main floatx 5 5 inti i int x 3 printf d i 例如 1 2 0 float 1 2 0 500000 2 经强制类型转换后 得到的是一个所需类型的中间变量 原来变量的类型并没有发生任何变化 例2 10 分析下面程序的运行结果 main inta floatb 3 5 a int b printf a d b f n a b 五 数据类型转换 上机练习 P22例2 6P24例2 8例2 9P25例2 10例2 11例2 12
展开阅读全文
相关资源
相关搜索

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


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

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


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