下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 基本数据类型、运算符与表达式,3.1计算机中数的表示 3.2C语言的基本数据类型 3.3常量和变量 3.4运算符和表达式 3.5运算符的优先级及结合性 3.6表达式的书写规则 3.7各种数据类型的转换,3.1计算机中数的表示,计算机的主要功能是处理各种信息,这些信息都必须经过数值编码后才能在计算机中存储、处理和传输。因为计算机是采用二进制数值存储信息和计算数据的,即以“0”和“1”两种代码进行存储、计算和传输信息,所示各种信息在计算机中都是二进制形式。,在计算机内部采用二进制数表示数据,而不是十进制数。这主要是因为采用二进制数 具有其他进制所不具备的优点: 易于表示 节约设备 运算简单
2、 可靠性强,一个数据每个数字符号的位置不同,它所代表的数值也不同,这就是经常所说的个位、十位、百位、千位、,一种进位计数制包含一组数码符号和两个基本因素: 一组数码用来表示某种数制的符号。如:1、2、3、A、B。 基数数制所用的数码个数,用R表示,称R进制,其进位规律是“逢R进一” 权数码表示在不同位置上的权值。在某进位制中,处于不同数位的数码,代表不同的数值,某一个数位的数值是由这位数码的值乘以这个位置的固定常数构成, 这个固定常数称为“位权”,3.1.1各种进制数的表示, 十进制数 十进制数由0、1、2、3、4、5、6、7、8、9等10个不同的符号组成,其基数为10,权为10n,十进制数的
3、运算规则是逢10进1。 二进制数 计算机中的所有数据是以二进制形式存储的,二进制数的数码是用“0”和“1”来表示的,其基数为2,权为2n,二进制数的运算规则是逢2进1。 八进制数 具有8个不同的数码符号0、1、2、3、4、5、6、7,其基数为8,权为8n,八进制数的运算规则是逢8进1。 十六进制 具有16个不同的数码符号0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,其基数为16,权为16n,十六进制数的运算规则是逢16进1。,3.1.1各种进制数的表示,B 一一二进制, D 一一十进制(D可省略), 0 一一八进制, H 一一十六进制,3.1.1各种进制数的表示, R进制数转
4、换为十进制数 按权展开法:把一个任意R进制数转换成十进制数,其十进制数值为每一位数字与其位权之积的和: anala0.a-lam(r)= a*Rn+.+a*r1+a*R0+a*R-l+.a*R-m,3.1.2 进制转换,例如: 10101.11B =124+023+122+021+120+12-1+12-2 =16+4+1+0.5+0.25=21.75 6101.2(0) =683+182+081+180+28-1 =3137.2525 101AH =1163+0162+1161+10160 =4122,3.1.2 进制转换, 十进制数转换成R进制数 整数部分:除以R取余数,直到商为0,得到的
5、余数即为二进制数各位的数码,余数从右到左排列。 小数部分:乘以R取整数,直到小数部分为0或满足精度要求为止,将所取得的整数从左到右排列,即为其在R进制中的小数部分数码。,3.1.2 进制转换,例如,将一个十进制整数108.375转换为二进制数。 方法如下: 把整数108反复除以2,直到商为0,所得的余数(从末位读起)就是这个数的二进制表示。简单地说,就是“除2取余法”。通常我们采用如图1-1(a)来进行演算。 把小数0.375连续乘以2,选取进位整数,直到满足精度要求为止。简称“乘2取整法”。 通常我们采用如图1-1(b)来进行演算。,3.1.2 进制转换,3.1.2 进制转换, 二进制数与八
6、进制数之间的转换 由于二进制数和八进制数之间存在特殊关系,即81=23,他们之间的对应关系是八进制数的每一位对应二进制数的三位。 二进制数转换成八进制数 二进制数转换成八进制数的方法是:先将二进制数从小数点开始;整数部分从右向左3位一组,小数部分从左向右3位一组,若不足三位用0补足,再转换成八进制数。,3.1.2 进制转换,例如,将1100101110.1101B转换为八进制数的方法如图1-3所示。,3.1.2 进制转换,八进制数转换成二进制数 方法为以小数点为界,向左或向右每一位八进制数用相应的三位二进制数取代,然后将其连在一起即可。若中间位不足3位在前面用0补足。,3.1.2 进制转换,例
7、如,将3216.42转换为二进制数的方法如图1-4所示。,3.1.2 进制转换, 二进制数与十六进制数之间的转换 二进制数转换成十六进制数 二进制数的每4位刚好对应于十六进制数的1位(161=24,其转换方法是,将二进制数从小数点开始,整数部分从右向左4位一组:小数部分从左向右4位一组,不足4位用0补足,每组对应一位十六进制数即可得到十六进制数。,3.1.2 进制转换,例如,将二进制数1101101110110101B转换为十六进制数如图1-5所示。,3.1.2 进制转换,十六进制数转换成二进制数 方法为以小数点为界,向左或向右每一位十六进制数用相应的四位二进制数取代,然后将其连在一起即可。,
8、3.1.2 进制转换, 机器数 计算机中只有二进制数值,且都是以二进制的形式存储和运算的。数的正、负号也是用二进制代码表示,数的正负用高位字节的最高位来表示,用“0”表示正数,“1”表示负数,其余位仍表示数值。把在机器内存的正、负号数字化的数称为机器数。,3.1.3 原码、反码和补码,机器数有3种表示方法:原码、补码和反码,是将符号位和数值位一起编码,机器数对应的原来数值称为真值。, 原码表示法 原码表示方法中,数值用绝对值表示,在数值的最左边用“0”和“1”分别表示正数和负数,书写成X原表示X的原码。 在原码的表示中,有以下两个特点: 最高位为符号位,正数为0,负数为1,其余n-1位是X的绝
9、对值的二进制表示。 0的原码有两种表示:+0原=00000000,一0原=10000000。 因此,原码表示法中,数值0不是惟一的。,3.1.3 原码、反码和补码, 反码表示法 用X反表示X的反码。 在反码的表示中,有以下特点: 正数的反码与原码相同,负数的反码是其绝对值的二进制表示按各位取反(0变 1,1变0)所得的表示。 0在反码表示中也有两种表示:+0反=00000000,一0反=11111111,即数值0不是惟一的。,3.1.3 原码、反码和补码, 补码表示法 用X补表示X的补码。 在补码的表示中,有以下特点: 正数的补码与原码、反码相同,负数的反码是其绝对值的二进制表示按各位取反(0
10、变 1,1变0)加1,即为其反码+1。 0在补码表示中:+0补=一0补=00000000,数值0是惟一的。 由于补码运算方便,所以在计算机中广泛使用。,3.1.3 原码、反码和补码,如何将一个负数的二进制补码数转换成十进制数?转换步骤如下: 首先将各位取反。 将其转换为十进制数 , 并在前加一负号。 对所得到的数再减 1, 即得到该数的十进制数。,3.1.3 原码、反码和补码,3.2 C语言的基本数据类型,指针类型,空类型void,定义类型typedef,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,基本数据类型,整型,字符型,实型,有,无,说明:数据类型
11、所占字节数随机器硬件不同而不同,上表以IBM PC机为例,3.3 常量与变量,标识符 定义:用来标识变量、常量、函数等的字符序列 组成: 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 大小写敏感 不能使用关键字,讨论:判断下列标识符号合法性 sumSumM.D.JohndayDate3days student_name#33lotus_1_2_3charab above $123 _toDay,M.D.John,3days,#33,char,$123,ab,长度:Turbo C中最长32个字符 命名原则: 见名知意,采用简洁有含义的英文单词(或缩写) 不宜混淆 如l与I, o与
12、0,标识符命名实例 stu_name, sum, total, day, count, sort,常量 在程序运行过程中,其值不能改变的量称为常量 常量可为任意数据类型 字面常量(直接常量) 整型: 12、0、-3 实型: 4.6、-1.23 字符型:a、d 字符串常量:”Hello”、”Good Morning!”,符号常量:标识符代表常量 定义格式: #define ,符号常量定义举例 #define PI 3.1415926 #define STAR *,说明:符号常量一般使用大写英文字母表示,以区别一般用于小写字母表示的变量。,符号常量使用,例 符号常量举例 #define PRICE
13、 30 main() int num,total; num=10; total=num*PRICE; printf(total=%d,total); ,运行结果:total=300,符号常量的使用能给程序员带来哪些好处?,变量 其值可以改变的量称为变量 变量也可以为任意数据类型 变量定义的一般格式 数据类型 变量1,变量2,变量n;,决定分配字节数 和数的表示范围,变量定义举例: int a,b,c; float data;,变量的使用:作强制定义,也就是“先定义,后使用”,例1 int student; stadent=19; /Undefined symbol stadent in fun
14、ction main,整型数据 整型常量,问题: 0123 = ( )10 0 x123 = ( )10 0Xff = ( )10,整型常量的类型 根据其值所在范围确定其数据类型 在整常量后加字母l或L,认为它是long int 型常量,例 12 与 12L,例 30000 为int型 65536 为long int型,整型变量 整型变量在内存中以二进制的形式存放 根据占用的字节数不同,分为不同类别,整型变量定义举例: int a,b; unsigned short c,d; long e, f;,实型数据 实型常量,十进制数形式(必须有小数点,整数部分为时可以省略) 0.123 .123 1
15、23.0 0.0 123.,指数形式(e或E之前必须有数字;指数必须为整数) 12.3e3 123E2 1.23e4 e-5 1.2E-3.5 .e3,规范化的指数形式: 在字母e(或)之前的数据中,小数点左边有且仅有一位非零的数字。,指数形式实型常量 12.3e3 123E2 1.23e4(规范化) 0.123e-3,float: 占4字节,提供7位有效数字 double:占8字节,提供1516位有效数字,字符常量 定义:用单引号括起来的单个普通字符或转义字符。 字符常量的值:该字符的ASCII码值 转义字符:反斜线后面跟一个字符或一个代码值表示,如 a A ? n 101,如 A65, a
16、97, 048 , n10,如 101 -A 012 -n 376 - x61 -a 60 -0 483 -(),例: A-101-x41-65,例 转义字符举例(ch2_001.c,ch2_004.c) main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C); ,运行结果:(屏幕显示) A B C Isay:”How are you?” C Program Turbo C,例 main() printf(“Yb=n”); ,运行结果: 屏幕显示:= 打印机输出:,注
17、意事项: 单撇号中的字符不能是或者 一个字符占一个字节,存其对应的ASCII码 思考:9和9的区别? 字符型数据可像整数一样在程序中参与相关的运算,a 32 结果为65,字符变量 字符变量存放字符ASCII码 char与int数据间可进行算术运算,例1 a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */,例2 main() char c1, c2; c1=97; c2=98; printf(“%c %d”, c1, c2); ,字符串常量 定义:用双引号(“”)括起来的字符序列 存储:每个字符串尾自动加一个 0 作为字符串结束标
18、志 字符常量与字符串常量不同,例: char ch; ch=“A”;,没有字符串变量,用字符数组存放,变量赋初值,例 main() int x,y; printf(“%d,%d”,x,y); ,运行结果:64,3129,如果定义了变量,但是没有对它赋初值,则它的值是一个不确定的数值。,3.4运算符和表达式,C运算符简介,学习运算符应注意 运算符功能 与运算量关系 要求运算量个数 要求运算量类型 运算符优先级别 结合方向 结果的类型,基本的算术运算符 +加法运算或正值运算符 -减法运算或负值运算符 *乘法运算符 /除法运算符,求商,两个整数相除结果为整数 %模运算符,求余,要求两边均为整型数据,
19、3+5、+3,5-2、-3,3*5,5/3,7%4,3.4.1算术运算符及其表达式,例 5/2 = -5/2.0 =,例 5%2 = -5%2 = 5%-2 = 1%10 = 5%1 = 5.5%2,2,-2.5,1,-1,1,0,(),1,取模的余数符号由被除数决定,算术表达式和运算符的优先级和结合性 算术表达式:用算术运算符和括号将运算对象连接起来的、符合C语法规则的式子。 求表达式的值: 先按运算符的优先级别高低次序执行; 再一个运算对象两则的运算赋的优先级别相同,则按规定的“结合方向”处理。,a*b/c-1.5+a,a b * c / d,自增+、自减运算符 作用:使变量值加1或减1
20、种类: 前置 +i, -i (先执行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再执行i+1或i-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,/4,/3,/c=20,a=4,/c=15,a=4,注意说明: 只能用于变量,不能用于常量或表达式; 结合方向“自右向左”; 优先级别: - - + - - * / % - + - 自增(减)运算常用于循环语句中循环变量自动加(减)1
21、或指针变量,使指针指向下一个地址,5+ () (a+b)+ () i+ (),例1解答: -i+ -(i+) i=3; printf(“%d”,-i+); /-3,例1: -i+ i=3; printf(“%d”,-i+);,i+j,应如何结合?,3.4.2关系运算符及其表达式,关系运算符 种类: = = != 结合方向:自左向右 优先级别:低于算术运算符而高于赋值运算符,例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc),关系表达式的值:是逻辑量“真”或“假”,分别用1和0表示。,例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f
22、=abc,/表达式值1,/表达式值1,/表达式值0,/d=1,/f=0,C中没有逻辑型,例1 若a=0; b=0.5; x=0.3; 则 a=x=b的值为,0,例2 5278在C中是允许的, 值为,0,例3 int i=1, j=7,a; a=i+(j%4!=0); 则a=,2,例4 a0 结果为 A100 结果为,1,0,例5 注意区分“=”与“= =” int a=0,b=1; if (a=b) printf(“a等于b”); else printf(“a不等于b”);,例6 表达式1.0/3.0*3.0= =1.0 的值为 可改写为: fabs(1.0/3.0*3.0-1.0)1e-6,
23、应避免对实数作相等或不等的判断,0,3.4.3逻辑运算符及其表达式,逻辑运算符 种类: a+b=3;,例 a3; a(a+b)*c,赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型,例1 float f; int i; i=10; f=i; 则 f=10.0,例2 int i; i=2.56; /结果i=2;,赋值表达式 定义:由赋值运算符”=”将一个变量和一个表达式连接起来的式子,叫赋值表达式。 一般形式: = 赋值表达式的值与变量值相等,且可嵌套,例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/b=10,c=
24、2,a=5, 表达式值5,/b=4,c=6,a=10,表达式值10,/c=6,a=11,表达式值11,/ b=5;a=5, 表达式值为5,/ b=5;a=5, 表达式值为5,/b=4,c=6,a=10,表达式值10,/c=6,a=11,表达式值11,/ b=5;a=5, 表达式值为5,/b=10,c=2,a=5, 表达式值5,/b=4,c=6,a=10,表达式值10,/c=6,a=11,表达式值11,/a,b,c值为5,表达式值为5,/ b=5;a=5, 表达式值为5,复合的赋值运算符 += -= *= /= %= = = a+=a-=a*a,/a=-264 等价于a=a+(a=a-(a*a)
25、,例: int a=2; a%=4-1; a+=a*=a-=a*=3;,/a=0 等价于a=a+(a=a*(a=a-(a=a*3),3.4.6逗号运算符和表达式,形式:表达式1,表达式2,表达式n 结合性:从左向右 优先级: 15(最低) 逗号表达式的值:等于表达式n的值,例1 a=3*5,a*4 a=3*5,a*4,a+5 例2 x=(a=3,6*3) x=a=3,6*a 例3 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); 例4 printf(“%d,%d,%d”,a,b,c) ; printf(“%d,%d,%d”,(a,b,c),b,c),/a=15,逗号表达式值为60,/a=15,逗号表达式值为20,/x=18,赋值表达式值18,/x=3,逗号表达式值18,/1,2,3,/3,2,3,/逗号起分隔作用,/逗号为逗号运算符,例: #include main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x); ,运行结果:x=3,3.4.7求字节运算符,sizeof运算符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026智慧楼宇管理员招聘真题及答案
- 2025年家庭教育指导师幼儿养育照护模块试题答案
- 2026年大学商学院测试题及答案
- 2026证券经纪人招聘笔试题及答案
- 2025年北京安贞医院招聘笔面试押题300题带完整答案
- 2026年巴萨球迷难度测试题及答案
- 2026招聘客服专员面试题及答案
- 2026长龙航空招飞试题及答案
- 2026长安汽车招聘笔试题及答案
- 2026年机械设计中的创意思维与案例
- 2026年山东圣翰财贸职业学院单招职业技能考试题库及答案解析
- 2026离婚协议书标准范文
- GB 14249-2026电子衡器安全要求
- 2026四川宜宾发展产城投资有限公司及子公司第一批员工招聘35人考试参考试题及答案解析
- 2026第二师铁门关市公安局招聘警务辅助人员(36人)笔试备考题库及答案解析
- 2026年临汾职业技术学院单招职业技能考试题库带答案详解(精练)
- 2026年春期人教版四年级下册数学全册教案(核心素养教案)
- 2026年法律专业基础知识考试试题及答案
- (完整版)护士结构化面试题目及答案
- 台球课件教学课件
- 水厂生产运行管理制度
评论
0/150
提交评论