




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计,第三章 数据类型与运算规则,3.1 数据与数据类型 3.2 C语言的基本数据类型及其表示 3.3 算术运算与赋值运算 3.4 关系运算与逻辑运算 3.5 位运算 3.6 其他运算 3.7 混合运算及数据类型转换,3.1 数据与数据类型,如何描述上述表达式中的数据、运算符号和 运算过程?,3.1 数据与数据类型,数据:是程序加工、处理的对象,也是加工的结 果; 数据类型:具有同样性质(能够作同样的操作,采 用同样的编码方式等)的数据集合称为数据 类型; 每种数据类型都有固定的表示方式,也就确定了可 能表示的数据范围和在内存中的存放形式; C语言为每个类型定义了一个标识符,称为类型 名,如整数型用int表示;,3.1 数据与数据类型,3.2 C语言的基本数据类型及其表示,常量与变量 整型类型及其表示 实型类型及其表示 字符型类型及其表示 指针型类型及其表示 变量的初始化,常量与变量,常量: 在程序运行过程中,其值不能改变的量。 如: 3,4.3,-1,A, “AB”; 符号常量: 用标识符来表示常量; 使用宏定义命令对符号常量进行定义; 定义: #define 标识符 常量 例如: #define PI 3.1415926,常量与变量,变量: 在程序运行过程中,其值能改变的量。 对变量的基本操作: 赋值: 取值:,常量与变量,变量名按标识符规则组成: 字母或下划线打头的字母、数字或 下划线序列; ab,b3,c_7, _max,Int 7t, 99r,int, 对变量的定义: 类型说明符 变量名表; 例如: int a,b,c;,变量必须先定义后使用;,常量与变量,变量的3个属性: 变量地址; 变量内容; 变量名;,整型类型及其表示,整型常量: 十进制整型常量:123,8,-10等; 八进制整型常量: 以数字0 打头的数字序列(0-7) 如 056, 017, 078; 十六进制整型常量: 以数字0和字母x打头的序列(0 - 9,a - f) 如 0x123,0x3A ,0x9g; 长整型常量在常量之后加上字母“l”或“L”,如123L,40000L等;,整型类型及其表示,整型变量:,名称 占内存字节 表示范围 说明方法 基本整型 2 -215 215-1 int a,b; 短整型 2 同上 short a,b; 无符号整型 2 0 65535 unsigned a,b; 长整型 4 -231-231 1 long a,b; 无符号长整型 4 0 232 1 unsigned long a;,整型类型及其表示,整型变量: 以关键字int为基本类型说明符; 配合四个类型修饰符,用来改变和扩充基本类型的含义; 整型数据在使用中应注意的问题: 变量要先定义后使用; 数据溢出; 若 int a,b;unsigned c;long d ; a=123; d= -105000; b=40000; c= 105000; 常量与变量的类型要匹配;,实型类型及其表示,实型常量: 小数形式:至少有一个小数点和一个数字, 如12.3,87.4,-0.25等; 指数形式:由十进制小数加上指数部分组成, 形式为:十进制小数e(E)指数 2.5e3 56E8 66e3 e2 1.2e 3e1.2,实型类型及其表示,实型变量:,名称 存储字节 表示范围 有效位 说明方法 单精度 4 -1038 - 1038 7 float a; 双精度 8 -10308 - 10308 16 double a; 长双精度 16 -104932 104932 19 long double a;,1-2-23 1,27-1=127,2127 1038,实型类型及其表示,实型变量: 以三种关键字定义实型变量; float 单精度型 double 双精度型 long double 长双精度型,字符型类型及其表示,字符型常量: 普通字符:单引号括起来的单个字符, 如a,B等; 转义字符:以转义标识符“”开始的字符序列, 例如: n(换行),t(跳格),b(退格),(). ddd(1到3位8进制数表示的字符) xdd(1到2位16进制数表示的字符),字符型类型及其表示,字符串常量: 双引号括起的一串字符, 例如“China”, “Beijing”; 系统对字符串尾自动加0作为字符串终结符; a与“a”的区别: 字符常量 a, 占1个字节 字符串常量 “a”, 占2个字节,字符型类型及其表示,字符型变量: 只存放一个字符的变量。 用char进行说明; 一个字符型变量可存放一个字符,占用一个字节,存放字符的ASCII码; char a;int b; a=A;b=a+32; printf(“%c,%d”,b,a); 输出: a,65 字符型数据与整型数据可以通用,指针型类型及其表示,指针是一种数据类型,是一个变量在内存中所 对应存储单元的地址; 指针变量是存放地址的变量; 指针就是地址,该地址就是某个变量在内存单 元中对应的存放位置;,指针型类型及其表示,变量的指针与变量的区别:,变量c的指针与变量c的区别是:c的值是A,它是内存单元1000的内容;而c的指针是存放变量c的地址1000,通过该指针可以间接取得变量c的值;,变量c,1000 1001,2000,变量pc (指针变量),指针型类型及其表示,指针变量的说明: 类型说明符 *变量名 例如 int a,*p; “*”号表示它后面的变量名为指针类型,称为指针变量; 类型说明符表示指针变量的类型,并非指针变量自身的类 型,而是指针变量所指对象的类型; 指针可以指向任何类型的对象,包括指针; 指针变量的使用: 则指针变量p中存放a的地址,称p指向a; *:指针内容运算符,*p表示取指针p所指内存单元的内容;,变量的初始化,先定义,再赋值; int x,y; x = 10, y = 30; 定义变量的同时对变量赋初值; int x = 10,y = 30; 不初始化会怎样?,混合运算及数据类型转换,混合运算: 是指在一个表达式中参与运算的对象不是相 同的数据类型; 数据类型转换: 运算中char型转换为int型,float型转换为doubl型; 低级类型服从高级类型,并进行相应的转换; char-int-unsigned-long-float-double 低高 赋值运算中最终结果的类型以赋值运算符左边变量的类 型为准;,混合运算及数据类型转换,float a=0.5; int b; char c=a; 则下列表达式的类型是 5 + 2 * a c b = 5 + 2 * a c,double, int,3.3 算术运算与赋值运算,C语言中的运算规则 算术运算符与算术表达式 自增、自减运算 赋值运算符和赋值表达式 组合赋值运算符和组合赋值表达式,C语言中的运算规则,运算符按照其在表达式中与运算对象的关系 可分为: 单目运算:连接一个运算对象; 双目运算:连接两个运算对象; 三目运算:连接三个运算对象; 运算符按照其在表达式中所起的作用可以分 为: 算术运算符: +,-, 自增自减运算符:+,- 关系运算符:, !=,= ,C语言中的运算规则,表达式: 用运算符将运算对象连接组成的符合C语言规则的算 式; 按照运算符与运算对象的关系,表达式可分为: 单目表达式 如 a; ba; 双目表达式 如 ab;ca*b; 三目表达式 如 max = (ab)?a:b; 按照运算符在表达式中的作用,表达式可分为: 算术表达式 如 a+b; 关系表达式 如 a!=b; ca; 赋值表达式 如 a = 3; ,C语言中的运算规则,优先级: 同一个表达式中不同运算符进行计算时的先后次序; 当变量的两边均有运算符时,其优先级高的先运算. a + b d 结合性: 是指同一个表达式中相同优先级的多个运算应遵循的运算 顺序; 左结合从左到右(除“=”外的双目运算符) a + b c (a + b) c 右结合从右到左(单目或三目运算符) -k+ -(k+),算术运算符与算术表达式,C语言允许的算术运算符包括: 加法运算或取正值运算,双目、单目运算符,作为 单目运算符时优先级高于双目运算符,如 a+b;+5; 减法运算或取负值运算,双目、单目运算符,作为 单目运算符时优先级高于双目运算符,如 a-b;-5; * 乘法运算,双目运算符,如 a*b; / 除法运算,双目运算符,如a/b; 13/4=? % 模运算(求余运算),双目运算符,要求两个运算 对象都为整型,例如 5%7= ?, 7%5= ?, 8%3.2 =?,5,2,算术运算符与算术表达式,算术运算符的优先级及结合性为:,算术运算符与算术表达式,算术表达式: 由算术运算符,常数,变量,函数和括号组成, 其基本形式与数学上的算术表达式类似. 例如 12.45-43*5 x/(67-(12+y)*a) 双目运算符两侧运算对象的类型如果不一致,系 统将自动按转换规律进行转换; 使用括号可以改变表达式的运算顺序; 函数调用也可作为算术表达式中的运算对象;,自增、自减运算,自增“”、自减“”运算: 单目运算,其作用是使变量的值增1或减1; 优先级高于所有双目运算; 应用形式: 前缀形式:+i; i; 表示变量在使用前自动加1或减1; 后缀形式:i+;i; 表示变量在使用后自动加1或减1; +、 运算只能作用于变量,不能用于表达式或常量; 用于+、 运算的变量只能是整型,字符型和指针变量; 前缀形式与后缀形式的意义不同; +、 的结合性是自右向左的;,自增、自减运算,若 int a=5,b; b=(a+)+(a+); b= a= b=(+a)+(+a); b= a= b=( a)+(a-); b= a=,10,7,14,7,8,3,Some questions,右结合 -k+ -(k+) ,能否用于float型数据? ,用于float型数据时编译没有错误 结果不确定 关于, 在一行语句中最好只出现一次+,-,多了可读性会很 差; C语言中允许编译程序自由重排表达式的顺序,以产生 最优代码,因此语句过于复杂时,采用不同的编译程序 编译时,可能会产生不同的运算结果。,赋值运算符和赋值表达式,赋值运算符: “”,其功能是计算赋值运算符“”右边表达式的值,并将计算结果赋给“”左边的变量;,若int k,i,j,a; a=5; k=3+(a=a+2);j=i=a*0.7; 则 a= k= i= j=,7,10,4,4,赋值运算符和赋值表达式,赋值表达式: 由赋值运算符将一个变量和一个表达式连接起来的式 子; 形式:变量名 表达式; 赋值表达式的值就是赋值运算符左边变量的值; 类型转换: 赋值运算符两边的数据类型不一致时需要进类型转 换; 转换原则是以“=”左边的变量的类型为准;,组合赋值运算符和组合赋值表达式,组合赋值运算符: 在赋值运算符”=”之前加上其他运算符可以构成组合运 算符,用于完成赋值组合运算操作。 形式: 运算符 ; 运算符可以是 、*、/、%等; 组成的组合赋值运算符为、*、/=、 等;,组合赋值运算符和组合赋值表达式,组合赋值表达式: 由组合赋值运算符将一个变量和一个表达式连接起来的 式子成为组合赋值表达式。 形式: 变量名 组合赋值运算符 表达式; 其功能等价于: 变量名 变量名 运算符 表达式,组合赋值运算符和组合赋值表达式,a+=b a=a+b a-=b a=a-b a*=b a=a*b a/=b a=a/b .,若 int a=1,b=2,c=3; 则 a+=b-=c a=a+(b-=c) a=a+(b=b-c) a=a+(b=-1) a=1+(-1),所以 a=0 b=-1,3.4 关系运算与逻辑运算,关系运算符与关系表达式 逻辑运算符与逻辑表达式 条件运算符与条件表达式,关系运算符与关系表达式,关系运算符: 包括 、=、= 低级:、! 关系表达式: 形式: 表达式1 关系运算符 表达式2 关系表达式的运算结果为逻辑值:关系成立,逻辑值为 “真”,用1表示;否则逻辑值为“假”,用0表示;,关系运算符与关系表达式,a!=b的值为: 233+82的值为: 0x10 的值为:,1或0,要表示数学中的00&x10,1,0,1,逻辑运算符与逻辑表达式,逻辑运算符: 包括:逻辑与&、逻辑或|、逻辑非!三种; 优先级为! & |,逻辑运算优先级低于关系运算 (!除外); 逻辑运算符的功能:,逻辑运算符与逻辑表达式,逻辑表达式: 逻辑表达式运算结果为逻辑值:真(1,判断时 以非零为真),假(0); 当 ba & a+ 的值为 ? a = ? a|(+b)的值为 ? b= ?,0,1,1,0,逻辑运算符与逻辑表达式,int a=3,b=1,x=2,y=0; (ab)&(xy) ab & xy (y|b)&(y|a) y|b & y|a !a | ab,条件运算符与条件表达式,条件运算符: 条件运算符为唯一的三目运算符,其形式为“?:” 条件表达式: 由条件运算符构成的表达式成为条件表达式,其形式 为: 表达式1 ? 表达式2 :表达式3 条件运算符中?和:总是成对出现,其功能为:,条件运算符与条件表达式,条件表达式的优先级: 高于赋值运算; 低于关系运算、逻辑运算和算术运算; 表达式是右结合的; 使用条件表达式可以使程序简洁明了; x0 ? 0 : (x=0 ? 0 : -1),条件运算符与条件表达式,char c=A; c=(c=A c= ?,a,条件运算符与条件表达式,若 x=5,y=6; k = xy?3:k4?k:6; 则 k= ? x= ? a= ? y= ?,5,6,6,5,3.5 位运算,位运算符 按位逻辑运算 移位运算 位运算赋值运算符,位运算符,位运算的对象是二进制位,有如下操作:, (按位求反) (右移) & (按位与) (按位异或) | (按位或),优先级同+,右结合,优先级比关系运算符高,优先级比关系运算符低,比逻辑运算符高,按位逻辑运算与移位运算,1=0,0=1,1. 按位求反,(00001000)= 11110111,左移右补0,000010002 = 00100000 82 = 8*22=32,2. 按位左移,按位逻辑运算与移位运算,000010002 = 00000010 82 = 8*2-2=2 111110002 = 11111110 -82 = -8*2-2=-2,3. 按位右移,右移 正数左补0, 负数左补1,1&1=1, 1&0=0&1=0&0=0,4. 按位与,01011001 & 00001111=00001001 保留特定位,按位逻辑运算与移位运算,11=00=0, 10=01=1,0|0=0, 1|0= 1|1=0|1=1,5. 按位异或,6. 按位或,01011001 00001111=01010110 特定位取反,01011001 | 00001111=01011111 特定位置赋1,位运算赋值运算符,位运算符与赋值运算符可以组成以下五种位 运算赋值运算符: x ,3.6 其他运算,逗号运算符(,): 优先级最低,自左向右结合; 可构成逗号表达式:E1 , E2 ,En 顺序计算表达式E1,E2,E
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-河南-河南林木种苗工四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-河南-河南堤灌维护工一级(高级技师)历年参考题库典型考点含答案解析
- 2024版离婚协议的性质法律问题
- 2025年事业单位工勤技能-河北-河北汽车驾驶与维修员四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-河北-河北房管员二级(技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-江西-江西电工二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江西-江西城管监察员二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江苏-江苏管工(技师/高级技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-广西-广西保安员三级(高级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广东-广东计算机文字录入处理员三级(高级工)历年参考题库典型考点含答案解析
- 工程专项考核管理办法
- 电缆测试技术课件
- 政协大走访活动方案
- 个人养老金课件
- 2025至2030中国氧化钪行业需求状况及未来趋势前景研判报告
- udi追溯管理制度
- 新能源产业园区厂房物业管理及绿色能源应用合同
- 读书分享《教师的语言力》
- 2025年5月上海普通高中学业水平等级性考试物理试题及答案
- 医院医患沟通谈话记录范本
- 资金往来清账协议书
评论
0/150
提交评论