资源预览内容
第1页 / 共57页
第2页 / 共57页
第3页 / 共57页
第4页 / 共57页
第5页 / 共57页
第6页 / 共57页
第7页 / 共57页
第8页 / 共57页
第9页 / 共57页
第10页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1C语言程序设计(三)计算机学院计算机学院裴明涛裴明涛2第三章 数据类型与运算规则3.1 数据与数据类型3.2 C语言的基本数据类型及其表示3.3 算术运算与赋值运算3.4 位运算3.5 其他运算3.6 混合运算及数据类型转换33.1 数据与数据类型(1)n如何描述上述表达式中的数据、运算符号和运算过程?43.1 数据与数据类型(2)n数据:数据:是程序加工、处理的对象,也是加工的结果;n数数据据类类型型:具有同样性质(能够作同样的操作,采用同样的编码方式等)的数据集合称为数据类型;n每种数据类型都有固定的表示方式,也就确定了可能表示的数据范围和在内存中的存放形式;nC语言为每个类型定义了一个标识符,称为类型名,如整数型用int表示;53.1 数据与数据类型(3)63.2 C语言的基本数据类型及其表示n常量与变量n整形类型及其表示n实型类型及其表示n字符型类型及其表示n变量的初始化7常量与变量(1)n常量常量:n在程序运行过程中,其值不能改变的量;n数值常量:数值常量:n整型常量: 3,-1n实型常量:,n字符常量字符常量n字符常量:A,cn字符串常量:“AB”,”hello”常量与变量(2)n符号常量符号常量:n用标识符来表示常量;n使用宏定义命令对符号常量进行定义;n定义: #define 标识符 常量n n #define W “windows 8”89常量与变量(3)n变量:变量:n在程序运行过程中,其值能改变的量;n变量名按标识符规则组成:n字母或下划线打头的字母、数字或下划线序列;nab,b3,c_7, _max,Intn7t, 99r,int, 变量必须先定义后使用;10常量与变量(4)n对变量的定义:对变量的定义:n类型说明符 变量名表;n例如: int a,b,c;n提倡用能说明变量用途的有意义的名字为变量命名;n对变量的基本操作:对变量的基本操作:n赋值:n取值:11常量与变量(5)n变量的变量的3个属性个属性:n变量地址;n变量内容;n变量名;12关于常量和变量的一些编程规范(1)n不使用常量的坏处:n程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。n在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。n如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。 13关于常量和变量的一些编程规范(2)n使用常量的规范:n常量全用大写的字母,用下划线分割单词。 n尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串。#define PI 3.1415926 n如果某一常量与其它常量密切相关,应在定义中包含这种关系,而不应给出一些孤立的值。#define RADIUS 100#define DIAMETER RADIUS * 2 14关于常量和变量的一些编程规范(3)n变量的命名规范:n变量名应当直观且可以拼读,最好采用英文单词或其组合,用词应当准确。例如不要把CurrentValue写成NowValuen程序中不要出现仅靠大小写区分的相似的变量名,例如x,X15关于常量和变量的一些编程规范(4)n变量的名字应当使用“名词”或者“形容词名词”。例如: float value,oldValue,newValue; n用正确的反义词组命名具有互斥意义的变量 例如: intminValue,maxValue; n尽量避免名字中出现数字编号,如value1, value2等,除非逻辑上的确需要编号。 16整形类型及其表示(1)n整型常量:整型常量:n十进制整型常量:123,8,-10等;n八进制整型常量:n以数字0 打头的数字序列(0-7)n如 056, 017, 078;n 十六进制整型常量:n 以数字0和字母x打头的序列(0 - 9,a - f)n 如 0x123,0x3A ,0x9g;n 长整型常量在常量之后加上字母“l”或“L”,如123L, 40000L等;17整形类型及其表示(2)n整型变量:整型变量:名称名称 占内存字节占内存字节 表示范围表示范围 说明方法说明方法基本整型 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; 18整形类型及其表示(3)n整型变量:整型变量:n以关键字int为基本类型说明符;n配合四个类型修饰符,用来改变和扩充基本类型的含义;n整型数据在使用中应注意的问题:整型数据在使用中应注意的问题:n变量要先定义后使用;n数据溢出; 若 int a,b;unsigned c;long d ; a=123; d= -105000; b=40000; c= 105000;n常量与变量的类型要匹配;19实型类型及其表示(1)n实型常量:实型常量:n小数形式:至少有一个小数点和一个数字,如,等;n指数形式:由十进制整数或小数加上指数部分组成,形式为:十进制小数e(E)指数n2.5e3 56E8 66e3(整数)20实型类型及其表示(2)n实型变量:实型变量:名称名称 存储字节存储字节 表示范围表示范围 有效位有效位 说明方法说明方法单精度 4 -1038 - 1038 7 float a;双精度 8 -10308 - 10308 16 double a;长双精度 16 -104932 104932 19 long double a;21字符型类型及其表示(1)n字符型常量:字符型常量:n普通字符:单引号括起来的单个字符,如a,B等;n转义字符:以转义标识符“”开始的字符序列,例如:nn(换行),t(跳格),b(退格),().nddd(1到3位8进制数表示的字符)nxdd(1到2位16进制数表示的字符)22字符型类型及其表示(2)n字符串常量:字符串常量:n双引号括起的一串字符,例如“China”, “Beijing”;n系统对字符串尾自动加0作为字符串终结符;na与“a”的区别:n字符常量 a, 占1个字节.n字符串常量 “a”, 占2个字节.aa 023字符型类型及其表示(3)n字符型变量:字符型变量:n只存放一个字符的变量,用char 说明;n一个字符型变量可存放一个字符,占用一个字节,存放字符的ASCII码; char a;int b; a=A;b=a+32; printf(“%c,%d”,b,a); 输出: a,65n字符型数据与整型数据可以通用?24变量的初始化n先说明,再赋值;先说明,再赋值;nint x,y;nx = 10, y = 30;n说明变量的同时对变量赋初值;说明变量的同时对变量赋初值;nint x = 10,y = 30;n不初始化会怎样?不初始化会怎样?253.3 算术运算与赋值运算nC语言中的运算规则n算术运算符与算术表达式n自增、自减运算n赋值运算符和赋值表达式n组合赋值运算符和组合赋值表达式26C语言中的运算规则(1)n运算符按照其在表达式中与运算对象的关系可分为:n单目运算:连接一个运算对象;n双目运算:连接两个运算对象;n三目运算:连接三个运算对象;n运算符按照其在表达式中所起的作用可以分为:n算术运算符: +,-,*,n自增自减运算符:+,-n关系运算符:, b)?a:bn按照运算符在表达式中的作用,表达式可分为:n算术表达式 如 a+bn关系表达式 如 a!=b can赋值表达式 如 a = 3 n28C语言中的运算规则(3)n优先级:n同一个表达式中不同运算符进行计算时的先后次序;n当变量的两边均有运算符时,其优先级高的先运算.na + b dn结合性:是指同一个表达式中相同优先级的多个运算应遵循的运算顺序;n左结合从左到右(除“=”外的双目运算符) a + b c (a + b) c n右结合从右到左(单目或三目运算符) -k+ -(k+)29算术运算符与算术表达式(1)nC语言允许的算术运算符包括:n 加法运算或取正值运算,双目、单目运算符,作为单目运算符时优先级高于双目运算符,如 a+b,+5n 减法运算或取负值运算,双目、单目运算符,作为单目运算符时优先级高于双目运算符,如 a-b,-5n* 乘法运算,双目运算符,如 a*bn/ 除法运算,双目运算符,如a/b, 13/4=?n% 模运算(求余运算),双目运算符,要求两个运算对象都为整形,例如 5%7= ?, 7%5= ?, 8%3.2 =?52330算术运算符与算术表达式(2)n算术运算符的优先级及结合性为:31算术运算符与算术表达式(3)n算术表达式:算术表达式:n由算术运算符,常数,变量,函数和括号组成,其基本形式与数学上的算术表达式类似;n例如 12.45-43*5 x/(67-(12+y)*a)n双目运算符两侧运算对象的类型如果不一致,系统将自动按转换规律进行转换;n使用括号可以改变表达式的运算顺序;32自增、自减运算(1)n自增自增“”、自减、自减“”运算:运算:n单目运算,其作用是使变量的值增1或减1;n优先级高于所有双目运算;n应用形式:n前缀形式:+i;-i; 表示变量在使用前自动加1或减1;n后缀形式:i+;i-; 表示变量在使用后自动加1或减1;n+、-运算只能作用于变量,不能用于表达式或常量;n用于+、-运算的变量只能是整型,字符型和指针变量;n前缀形式与后缀形式的意义不同;n+、-的结合性是自右向左的;33自增、自减运算(2)nint m,n;nm = n+; 等价于 m = n; n = n + 1;nm = +n; 等价于 n = n + 1; m = n;nm = -n+; 等价于 m = -(n+); 等价于 m = -n; n = n+1;34自增、自减运算(3) 若若 int a=5,b;int a=5,b; b=(a+)+(a+); b= a=b=(a+)+(a+); b= a= b=(+a)+(+a); b= a= b=(+a)+(+a); b= a= b=(-a)+(a-); b= a= b=(-a)+(a-); b= a= 1071478335自增、自减运算(4)n关于,n在一行语句中最好只出现一次+,-,多了可读性会很差;nC语言中允许编译程序自由重排表达式的顺序,以产生最优代码,因此语句过于复杂时,采用不同的编译程序编译时,可能会产生不同的运算结果。n+,-用于float会怎样?36赋值运算符和赋值表达式(1)n赋值运算符:赋值运算符:n“”,其功能是计算赋值运算符“”右边表达式的值,并将计算结果赋给“”左边的变量;n右结合,优先级倒数第二;若若int k,i,j,aint k,i,j,a;a=5;a=5;k=3+(a=a+2)k=3+(a=a+2);j=i=a*0.7;j=i=a*0.7;则则 a= k= i= j=a= k= i= j= 7104437赋值运算符和赋值表达式(2)n赋值表达式:赋值表达式:n由赋值运算符将一个变量和一个表达式连接起来的式子;n形式:变量名 表达式 n赋值表达式的值就是赋值运算符左边变量的值;n类型转换:类型转换:n赋值运算符两边的数据类型不一致时需要进类型转换;n转换原则是以“=”左边的变量的类型为准;38组合赋值运算符和组合赋值表达式(1)n组合赋值运算符:组合赋值运算符:n形式: 运算符 n运算符可以是 、*、/、%等;n组成的组合赋值运算符为、*、/=、等;n组合赋值表达式:组合赋值表达式:n形式: 变量名 组合赋值运算符 表达式n其功能等价于: 变量名 变量名 运算符 表达式39组合赋值运算符和组合赋值表达式(2)a+=b a+=b a=a+b a=a+b a-=b a-=b a=a-b a=a-ba*=b a*=b a=a*b a=a*b a/=b a/=b a=a/b a=a/b.若若 int a=1,b=2,c=3; int a=1,b=2,c=3; 则则a+=b-=c a+=b-=c a=a+(b-=c) a=a+(b-=c) a=a+(b=b-c) a=a+(b=b-c) a=a+( a=a+(b=-1b=-1) ) a=1+(-1) a=1+(-1)所以所以 a=0 b=-1a=0 b=-1int a=3,b=4;int a=3,b=4;a*=ba*=b5 5a=27 b=4a=27 b=4403.4 位运算n位运算符n按位逻辑运算n移位运算n位运算赋值运算符41位运算符n位运算的对象是二进制位,有如下操作: (按位求反)按位求反) (右移右移) & (按位与)(按位与) (按位异或)(按位异或) | (按位或)(按位或)优先级同优先级同+,+,右结合右结合优先级比关系运算符高优先级比关系运算符高优先级比关系优先级比关系运算符低运算符低, ,比逻比逻辑运算符高辑运算符高42按位逻辑运算与移位运算(1)1=01=0,0=10=1 1. 按位求反按位求反 (0000100000001000)= 11110111 = 11110111 左移左移右补右补0000010002 = 00100000000010002 = 00100000 82 = 8*2 82 = 00000010000010002 = 00000010 82 = 8*2 82 = 8*2-2-2=2=2111110002 = 11111110111110002 = 11111110 -82 = -8*2 -82 = -8*2-2-2=-2=-2 3. 按位右移按位右移右移右移 正数左补正数左补0, 负数左补负数左补11&1=1, 1&0=0&1=0&0=04. 按位与按位与0101010110011001 & 0000 & 000011111111=0000=000010011001 保留特定位保留特定位44按位逻辑运算与移位运算(3)11=00=0, 10=01=10|0=0, 1|0= 1|1=0|1=15. 按位异或按位异或6. 按位或按位或0101010110011001 0000 000011111111=0101=010101100110 特定位取反特定位取反0101010110011001 | 0000 | 000011111111=0101=010111111111 特定位置赋特定位置赋1 145位运算赋值运算符n位运算符与赋值运算符可以组成以下五种位运算赋值运算符:nx &= y; 相当于:x = x&y;nx |= y; 相当于:x = x|y;nx = y; 相当于:x = xy;nx = y; 相当于:x = x, . 运算符运算符:n用来引用结构成员的运算符;n优先级最高,左结合;503.5 其他运算(5)n(type)运算符:运算符:n形式:(类型)表达式n功能:将表达式强制转换成指定类型;(int)(a+2*0.5) int)(a+2*0.5) (int)a(int)a int(a+2*0.5) int(a+2*0.5)intdouble3.6 混合运算及数据类型转换(1)n混合运算:是指在一个表达式中参与运算的对象不是相同的数据类型;n数据类型转换:n赋值运算中的类型转换;n(type)运算符的类型转换;n由语言的编译系统自动完成的类型转换;n一种“隐式的”自动类型转换;n必须了解这种自动转换的规则及其结果,否则会引起对程序执行结果的误解;513.6 混合运算及数据类型转换(2)n由语言的编译系统自动完成的类型转换:n运算中所有的char型数据都转换为int型,float型转换为double型;n低级类型转换为高级类型;n赋值运算中结果的类型以赋值运算符左边的变量类型为准;523.6 混合运算及数据类型转换(3)53doubledoublefloatfloatlongunsignedintchar 精度高精度高精度低精度低2.0 + 1/2;2.0 + 1/2;表达式的表达式的值?值?3.6 混合运算及数据类型转换(4)nint a,j,y;nfloat b;nlong d;ndouble c; ny = j + a + a*b c/d;54553.6 混合运算及数据类型转换(5)float a=0.5;int b;char c=a;则下列表达式的类型是则下列表达式的类型是 5 + 2 * a c b = 5 + 2 * a cdouble int56运算符优先级小结57小结数据与数据类型整型实型各种运算算术运算字符型指针型关系运算位运算其他运算
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号