已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,第二章,数据类型、运算符与表达式,什么是数据类型?,数据结构+算法=程序,C语言中以 “数据类型”形式存在,对数据的描述,对操作的描述,2.1 C语言的基本数据类型,C语言提供了以下一些数据类型。,数据类型,指针类型,空类型(无值类型) void,基本类型,概念:在程序运行过程中,其值不能被改变的量。在程序中以两种形式出现:直接常量(字面常量)和符号常量。,2.2.1整型常量 (1)十进制整数。 如:123, -456,4。 045,12D (2)八进制整数。以0头的数是八进制数,通常是无符号数。 如:0123,073,0101。017777。 256,03A2 (3)十六进制整数。以0x开头的数是16进制数,通常是无符号 数。 如:0x123, 0xffff。 023, 23D ,2.2 常量,两种表示形式,小数 0.123 指数 3e-3,注意:字母e(或E)之前必须有数字,且e/E后面的指数必须为整数:,1e3、1.8e-3、-123e-6、-.1e-3 e3、2.1e3.5、.e3、e ,2.2.2 实型常量,规范化的指数形式: 在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。 例如: 123.456可以表示为: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 其中的1.23456e2称为“规范化的指数形式”。,2.2.3 字符常量,(1)用单引号括起来的一个字符是字符型常量 (2)只能包含一个字符,例,a,A, 1 abc、“a” ,语言还允许使用一种特殊形式的字符常量,就是以反斜杠“ “开头的转义字符。,例2.1转义字符的使用 #include void main() int a,b,c; a=1;b=2;c=3; printf(“%dnt%d%dn%d%dtb%dn”,a,b,c,a,b,c); ,显示屏上的运行结果: 1 23 12 3,2.2.4 字符串常量,字符串常量是一对双撇号括起来的字符序列 合法的字符串常量: “How do you do.”, “CHINA”, “a” , “$123.45” 可以输出一个字符串,如 printf(“How do you do.”);,字符与字符串的区别有哪些?,2.2.5 符号常量,用一个标识符代表一个常量。,格式:#define 常量名 字面常量 举例:#define PRICE 100 #define PI 3.14 #define C1 a,习惯上常量名用大写,符号常量的定义放在 函数外面。,例2.2符号常量的使用 #define PRICE 30 #include void main ( ) int num, total; num=10; total=num * PRICE; printf(total=%dn ,total); ,标识符就是一个名字,在程序执行过程中,可以改变的量称为变量。,1、标识符就是一个名字(如常量名、变量名、函数名)。 2、组成:只能由字母、数字、下划线组成。且第一个字符必须为字母或下划线。 例:sum,_total, month, Student_name, BASIC, li_ling M.D.John, ¥123,3D64,ab 3、C语言的关键字不能用作变量名。 4、在选择变量名和其它标识符时,应注意做到“见名知意”,即选有含意的英文单词 (或其缩写)作标识符。 例如,name(姓名)、age(年龄) 5、建议变量名的长度最好不要超过8个字符。,标识符,2.3 变量,2.3.1 整型变量,类型 类型说明符 长度 数的范围 基本型 int 2字节 -3276832767 短整型 short 2字节 -215215-1 长整型 long 4字节 -231231-1 无符号整型 unsigned 2字节 065535 无符号短整型 unsigned short 2字节 065535 无符号长整型 unsigned long 4字节 0(232-1),1、 整型变量的分类,2、 整型变量的说明 程序中用到的变量必须“先说明,后使用”。,变量说明的一般格式:类型说明符 变量名,变量名,; 例如: int a,b;(指定变量、为整型) unsigned short c,d;(指定变量、为无符号短整型) long e,f;(指定变量、为长整型),3、 整型常量的后缀,(1)一个整数,如果其值在-32768+32767范围内,认为它是int型。 (2) 一个整数,如果其值超过了上述范围,而在-2147483637+2147483647范围内,则认为它是为长整型。 (3) 一个整常量后面加一个字母u或U,认为是unsigned int型,如12345u。 4)在一个整常量后面加一个字母l或L,则认为是long int型常量。 例如: 123l 432L 0L,2.3.2 实型变量,类型 位数 数的范围 有效数字 float 32 10-37 1038 67 位 double型 64 10-30710308 1516位 long double 128 10-4931104932 1819位,1、实型变量的分类(单精度型、双精度型、长双精度型),2、实型变量的说明 float a,b; (指定变量a,b为单精度型) double c,d; (指定变量c,d为双精度型),3、实型常量的后缀 实型常数,系统按双精度来处理,但如是在数的后面加字母f或F(如1.65f, 64.87F),这样编译系统就会把它们按单精度处理。,例2.3 float 和double的应用 #include void main( ) float a; doubleb; a = 5555.55555; b = 5555.5555555555 ; printf(“%fn%f”,a,b); ,2.3.3 字符型变量 字符型变量用来存放字符常量,注意只能放一个字符。 字符变量的定义形式如下:char c1,c2; 可以用下面语句对c1,c2赋值: c1a;c2b ; 一个字符变量在内存中占一个字节。,将一个字符常量放到一个字符变量中,实际上并不是把该字 符本身放到内存单元中去,而是将该字符的相应的ASCII代码 放到存储单元中。 例:字符变量ch中存放字符a,其ASCII码为97,在内存中以二进制形式存放,其格式如下:,ch,0 1 1 0 0 0 0 1,注意:字符型数据与整型数据在存储方式上的相似性使得两者之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出。但字符型数据的表示范围是:0255。,例2.4 向字符变量赋以整数。 #include void main() char c1,c2; c1=97; c2=98; printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); ,说明:在第和第4行中,将整数和分别赋给c1和c2,它的作用相当于以下两个赋值语句: c1a;c2 b; 因为a和b的ASCII码为97和98,运行结果: 97 98,例2.5 大小写字母的转换 #include void main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“c c,c1,c2); ,说明:程序的作用是将两个小写字母a和b转换成大写字母A和B。从ASC II代码表中可以看到每一个小写字母比它相应的大写字母的ASC II码大。语言允许字符数据与整数直接进行算术运算。,运行结果: ,2.4 运算符与表达式,的运算符有以下几类:,2.4.1 算术运算符和算术表达式 1、算术运算符 + (加法运算符,或正值运算符,如:、) - (减法运算符,或负值运算符,如:、) * (乘法运算符,如:*) / (除法运算符,如:) % (模运算符,或称求余运算符,如:的值为) + (自增运算符,如:i+、+i) - (自减运算符,如:i-,-i),双目运算符 左结合,单目运算符 右结合,自增、自减运算符 作用是使变量的值增或减 如: +i(在使用i之前,先使i的值加1) -i(在使用i之前,先使i的值减1) i+(在使用i之后,使i的值加1) i-(在使用i之后,使i的值减1),注意:两个整数相除的结果为整数,舍去小数部分。 当商为负数时,多采用“向零取整”的方法。 例: 5/3=1 -5/3= -1 求余运算的两侧均应为整数 例:5%3=2,例:假设i,j均已说明,且i=3; j=+i; i的值先变成4, 再赋给j, j的值也为4 j=i+; 先将i的值3赋给j, j的值为3,然后i变为4,例2.7 自增、自减运算符的应用 #include “stdio.h” void main( ) int i,m,n,j,k; i=10; m=i+;n=+i; j=i- -;k=-I; printf(“%d,%d,%d,%dn”,m,n,j,k); ,2、算术表达式 用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子,称为算术表达式。运算对象包括常量、变量、函数等。 例如: a*b/c-1.5a 是一个合法的表达式。,2.4.2 赋值运算符与赋值表达式,1、简单赋值运算符与赋值表达式 赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量。如“=”的作用是执行一次赋值操作(或称赋值运算)。把常量赋给变量。也可以将一个表达式的值赋给一个变量。 如:b=4; a=b+3; 由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。 一般形式为: 例如: “5”是一个赋值表达式,2、变量赋初值,(1)语言允许在定义变量的同时使变量初始化。 如:int a=3; / 指定为整型变量,初值为 float f=3.56; / 指定为浮点型变量,初值为 3.56 char c=a; / 指定为字符变量,初值为a (2)可以使被定义的变量的一部分赋初值。 如:int a,b,c=5;表示指定a、b、c为整型变量,但只对初始化,c的初值为。 相当于:int a,b,c; c=5; (3)如果对几个变量赋以同一个初值, 应写成:int a=3,b=3,c=3; 表示a、b、c的初值都是。 不能写成int a=b=c=3;,3、类型转换,赋值表达式要求左右两边的数据类型要相同,如果不一致,在赋值时要进行类型转换。包括自动转换和强制类型转换两种方法。,(1)自动类型转换,转换规则,若参与运算的运算量类型不同,则先转换成同一种类型,然后进行运算; 转换按数据长度增加的方向进行,以保证精度不降低; 所有实型运算都以双精度进行,即使仅含float型,也要先转换成double型,再运算。 char和short型参与运算时,必须先转换为int型。 在赋值运算中,赋值符号两边的数据类型不同时,把赋值号右边的类型自动换成左边变量的类型。,10+a+i*f-d/e,若int i; float f;double d; long e;i=2; f=2.5; d=3.9; e=3; 下边表达式的值是多少?,?,例2.9自动转换类型的应用 #include “stdio.h” void main() int a,b; float x=23.54; char c1=d; a=x;b=c1; printf(“%d,%dn”,a,b); ,(2) 强制类型转换,可以利用强制类型转换运算符将一个表达式转换成所需类型。 一般形式:() 例如: (double) 将转换成double类型 (int)(x+y) 将x+y的值转换成整型 (float)(5%3) 将5%3的值转换成float型,例2.10 强制类型转换。 #include void main( ) float x; int i; =3.6; i=(int)x; printf(“x=%f,i=%dn“,x,i); ,运行结果: x3.600000, i=3,说明:有两种类型转换,一种是在运算时不必用户指定,系统自动进行的类型转换,如3+6.5。第二种是强制类型转换。当自动类型转换不能实现目的时,可以用强制类型转换。,4、复合赋值运算符及表达式,在赋值符“”之前加上其他运算符,可以构成复合赋值运算符。 例如: a+=3 等价于 a=a+3 x*=y+8 等价于 x=*(y+8) x%=3 等价于 x=x%3,以“”为例来说明,它相当于使进行一次自加()的操作。即先使加,再赋给。,注意:如果是包含若干项的表达式,则相当于它有括号。 如: x%=y+3 x%=(y+3) x=x%(y+3)(不要错写成x=x%y+3),5、对赋值表达式求解的过程 求赋值运算符右侧的“表达式”的值; 赋给赋值运算符左侧的变量。 例如: 赋值表达式“=3*5”的值为15,执行表达式后,变量a的值也是15。,赋值表达式中的“表达式”,又可以是一个赋值表达式。例如: a=(b=5) 分析:请分析下面的赋值表达式(a=3*5)=4*3 赋值表达式也可以包含复合的赋值运算符。如:a+=a-=a*a 分析:若a的初值为12,则执行上述表达式后a=,?,能否写成: a=3*5=4*3,2.4.3 逗号运算符与逗号表达式,逗号运算符: 将两个或多个表达式连接起来,又称为“顺序求值运算符”。 如:5,,逗号表达式的一般形式: 表达式,表达式,表达式,表达式,求解过程: 从表达式开始求解,逐个求解表达式、表达式3、表达式n;整 个逗号表达式的值是表达式n的值。,逗号运算符是所有运算符中级别最低的。 例: (1)*5,* (2)(*,*),a+5 (3) (,*) (4),*3,注意:并不是任何地方出现的逗号 都是作为逗号运算符。例如函数 参数也是用逗号来间隔的。 如: printf(“%d,%d,%d”,a,b,c);,2.4.5 关系运算符和关系表达式,关系运算符及其优先次序(从左到右) (大于) = (大于或等于) = (等于) != (不等于),优先级别:,如:ca+b a=bc a=bc,c(a+b) a=(bc) a=(bc),关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符表达式)接起来的式子,称关系表达式 例:ab, a+bb+c, (a=3)(b=5), ab)(bb”的值为“真”,表达式的值为1。,已知: (a=3 b=2 c=1 d=0),0,a=bc,d=ab+c,1,d=ab+c?,思考,C语言中没有专用的逻辑值,1代表真,0代表假,例2.13 用C表达式描述下列条件 (1)整数x为偶数; (2)整数m不是n的倍数;,X%2=0,m%n!=0,2.4.6 逻辑运算符和逻辑表达式,1.逻辑运算符及其优先次序 (1) & (逻辑与) (2) | (逻辑或) (3) ! (逻辑非),优先次序:赋值 | & 关系 算术 !,2.逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子就 是逻辑表达式。 逻辑表达式的值应该是一个逻辑量“真”或“假”。,例:a&b 若a,b为真,则a&b为真(1) 。 a|b 若a,b之一为真,则a|b为真(1) 。 !a 若a为真,则!a为假(0) 。,例:设a=4,b=5: !a的值为0 a&b的值为1 a|b的值为1 !a|b的值为1 4&0|2的值为1 ! a & (53) | b的值为1,任何非零的数值被认作“真”,例:(m=ab)&(n=cd) 当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“ab”的值为0,因此 m=0,而“n=cd”不被执行,因此n的值不是0而仍保持原值1。,在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。 (1)a&b&c 只有a为真时,才需要判断b的值,只有a和b都为真时,才需 要判断c的值。 (2)a|b|c 只要a为真,就不必判断b和c的值,只有a为假,才判断b。 a和b都为假才判断c,2.4.4 条件运算符和条件表达式,条件运算符是C语言中唯一的一个三目运算符。 格式: 表达式?表达式表达式 执行过程: 先求解表达式,若为真,则求解表达式,此时表达式的值就作为整个条件表达式的值。若表达式的值假,则求解表达式,表达 式的值就是整个条件表达式的值。 条件运算符优先级高于赋值运算符 ,低于关系运算符和算术运算符。,例2.12 输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。 #include void main ( ) char ch; scanf(“%c“, ,2.5 位运算符与位运算,所谓位运算,就是参与运算的量按二进制进行运算。,语言提供的位运算符有:,运算符 含义 运算符 含义 按位与 取反 | 按位或 右移,(1)位运算符中除以外,均为双目(元)运算符,即要求两侧各有一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 母婴保障考试试题及参考答案
- 2026年中国提升机行业市场发展现状研究及投资战略咨询报告
- 2026年中国基础有机化工原料未来发展趋势预测研究报告
- 测试技术模拟考试题及参考答案西北工业大学考试题库及答案详解
- 2026年山东德州会计继续教育模拟试题及答案详解
- 2026年中国预应力钢筒砼管(pccp)管材未来发展趋势分析及投资规划建议研究
- 2026年摄影色彩模拟试题及答案详解
- 2026年中国再生资源回收利用行业十五五规划分析及投资前景规划报告新版
- 2026年宜宾市经济产业发展规划报告
- 2026年山东地理模拟试题卷及答案详解
- 中国银行培训员工制度
- 镇海区国资系统招聘笔试题库2026
- 蒸汽锅炉安全培训教育课件
- 检验工作台管理制度规范
- 心内科实习生入科宣教
- 养鸡场转让合同范本
- 产业路施工方案
- 电子秤用电培训试题及答案
- 《福建省城市轨道交通工程工程量清单计量规则(2024版)》
- 2025届贵州省金太阳高三下学期10月联考-数学试题(含答案)
- 围棋教学课件下载
评论
0/150
提交评论