数据类型和表达式.pptx
《数据类型和表达式.pptx》由会员分享,可在线阅读,更多相关《数据类型和表达式.pptx(73页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、15.1 5.1 数据的存储格式数据的存储格式数据在计算机内存中都是以二进制形式存储的,但是不同类型的数据,其存储的格式不尽相同,包括:1.整型数据的存储格式2.实型数据的存储格式3.字符型数据的存储格式第1页/共73页25.1 5.1 数据的存储格式数据的存储格式整型数据的存储格式整型数据在内存中是以补码形式存储。整型数值可以采用原码、反码和补码不同的形式表示。正数的原码、反码和补码相同,符号位是0,其余各位表示数值,如数值8转换成二进制为1000,其内存中形式为:0000000000001000第2页/共73页35.1 5.1 数据的存储格式数据的存储格式整型数据的存储格式负数的原码、反码
2、和补码则不同:(1)原码:符号位是1,其余各位表示数值的绝对值。(2)反码:符号位是1,其余各位对原码取反。(3)补码:反码加1。-8的原码是:-8的反码是:-8的补码是:100000000000100011111111111101111111111111111000第3页/共73页45.1 5.1 数据的存储格式数据的存储格式整型数据的存储格式两个字节的存储单元能表示的最大正数是215-1,即32767,其补码形式为:两个字节的存储单元能表示的最小负数是-216,即-32768,其补码形式为:11111111111111110111111111111111第4页/共73页55.1 5.1 数
3、据的存储格式数据的存储格式整型数据的存储格式无符号整数用全部16位二进制位来表示数值大小。因此无符号整数能表示的最大整数为216-1,即65535:最小的整数为0:00000000000000001111111111111111第5页/共73页65.1 5.1 数据的存储格式数据的存储格式实型数据的存储格式实型数据一般占4个字节内存空间。按指数形式存储。例如实数3.14159首先需要转换成指数形式0.314159e+01,其在内存中的存储形式如下:实型数据的存储规律:1)小数部分占的位数愈多,数值的有效数字愈多,精度愈高。2)指数部分占的位数愈多,则能表示的数值范围愈大。+.3141591数符
4、小数部分指数第6页/共73页75.1 5.1 数据的存储格式数据的存储格式字符型数据的存储格式每个字符变量被分配一个字节的内存空间,存储的是字符的ASCII码(ASCII码见附录A)。例如,字符C的ASCII码是67,用二进制表示为1000011,在内存中以下列形式存储:0 01 10 00 00 00 01 11 1第7页/共73页85.2 5.2 基本数据类型基本数据类型类别名称类型说明符字节取值范围整型有符号整型signed int4-231231-1有符号短整型signed short int2-215215-1有符号长整型signed long int4-231231-1无符号整型u
5、nsigned int40232-1无符号短整型unsigned short int20216-1无符号长整型unsigned long int40232-1实型单精度实型float4约(10-381038)双精度实型double8约(10-30810308)字符型字符型char1028-1表5-1 基本数据类型第8页/共73页95.2.1 5.2.1 整型整型整型是指不存在小数部分的数据类型,可分为有符号类型(signed)和无符号类型(unsigned)。int类型是计算机所给出的整数的正常大小。由于16位整数的上限值为215-1,这会对许多应用产生限制,所以C语言还提供了长整型(long
6、)。而某些时候,为了节省空间,需要使用存储空间较小的数值,称之为短整型(short)。第9页/共73页105.2.1 5.2.1 整型整型整型常量整型常量就是整常数或整数,只要整型常量的数值不超过表5-1中类出的整型数据的取值范围,它就是合法的常量。C语言允许使用十进制、八进制和十六进制形式书写整型常量:1)十进制整数:由正、负号和阿拉伯数字09组成,但是首位数字不能是0。如:10。2)八进制整数:由正、负号和阿拉伯数字07组成,首位数字必须是0。如:010。3)十六进制整数:由正、负号和阿拉伯数字09、英文字符af或AF组成,首位数字前必须有前缀0 x或0X。如0 x10。第10页/共73页
7、115.2.1 5.2.1 整型整型整型常量当程序中出现整型常量时,如果它属于int类型的取值范围,那么编译器会把此常量作为普通整型来处理,否则作为长整型来处理。为了迫使编译器把常量作为长整型来处理,只需在数值后面加上一个字母L或l:-123L、0123L。而为了指明是无符号常量,可以在常量后面加上字母U或u:123U、0 x123U。注意:八进制和十六进制只是数值书写的另一种形式,它们不会对数值实际存储的方式产生影响(整数都是以二进制形式存储的,而不考虑实际书写的方式)。任何时候都可以从一种形式转换为另一种形式。第11页/共73页125.2.1 5.2.1 整型整型整型数据的输入与输出使用p
8、rintf和scanf函数。在计算机中一旦定义了整形变量的类型,其内存字节数和存储形式是确定的。但是必须注意对于同一个整数其常数的书写格式有多种(十进制、八进制、十六进制),且输入、输出的格式也有多种(%d、%u、%o、%x、等)第12页/共73页135.2.1 5.2.1 整型整型程序示例/*用%d、%o和%x输入输出整型数据*/#include void main(void)int a,b,c;printf(输入a,b,c,分别为八进制、十进制和十六进制:n);scanf(%o%d%x,&a,&b,&c);printf(%o,%d,%xn,a,a,a);printf(%o,%d,%xn,b
9、,b,b);printf(%o,%d,%xn,c,c,c);头文件头文件地址符地址符输出结果输出结果输入输入a a,b b,c c,分别为八进制、十进制和十六,分别为八进制、十进制和十六进制:进制:10 10 1010 10 101010,8 8,8 81212,1010,a a2020,1616,1010Press any key to continuePress any key to continue第13页/共73页145.2.2 5.2.2 实型实型实型数据分为:float:单精度实型double:双精度实型一般,单精度实型在内存中占4个字节,有效数字为6位;双精度实型占8个字节,有效
10、数字为15位。第14页/共73页155.2.2 5.2.2 实型实型实型常量在C语言中,实数只采用十进制表示形式,可以用浮点表示法和科学计数法表示。1)浮点表示法:实数由正号、负号、阿拉伯数字09和小数点组成,必须有小数点,并且小数点前、后至少一边要有数字。实数的浮点表示法又称实数的小数形式。如3.14、.123、10.0等。2)科学计数法:实数由正号、符号、阿拉伯数字09、小数点和字母e或E组成。e是指数的标志,在e之前要有数据,e之后的指数只能是整数。实数的科学计数法又称实数的指数形式。如0.314e1表示0.314101、0.314e-1表示0.31410-1。默认情况下,实型常量都是以
11、双精度的形式存储。第15页/共73页165.2.2 5.2.2 实型实型实型数据的输入和输出 用函数scanf和printf实现实型数据的输入和输出。输出实型数据时,单精度和双精度实型数据使用相同的格式控制说明;输入实型数据时,格式控制说明可以通用,但是,输入double型数据时,在格式控制说明中必须加限定字母l,否则输入变量将无法得到正确的输入数据。第16页/共73页175.2.2 5.2.2 实型实型程序示例/*使用基本格式说明符输入输出实型数据*/#include void main(void)float f;double d;scanf(%f,&f);scanf(%lf,&d);pri
12、ntf(%f,%en,f,f);printf(%6.3f,%6.2f,%.2fn,d,d,d);格式说明符格式说明符输出结果输出结果123.456 3.1415926123.456 3.1415926123.456001,1.234560e+002123.456001,1.234560e+002 3.142,3.14,3.14 3.142,3.14,3.14Press any key to continuePress any key to continue第17页/共73页185.2.3 5.2.3 字符型字符型每个字符数据在内存中占用一个字节,用于存储它对应的ASCII码值。所以C语言中的字
13、符具有数值特征,不但可以写成字符常量的形式,还可以用相应的ASCII码表示,即可以用整数来表示字符。例如:a的ASCII码值为97,A的ASCII码值为65,而空格 的ASCII码值为32。第18页/共73页195.2.3 5.2.3 字符型字符型字符型常量1)字符型常量指单个字符,用一对单引号及其括起来的字符来表示,如a,B,9,*,都是合法的字符常量。注意:1和1的区别,一个是数值1,一个字符1其对应的ASCII码值为49。第19页/共73页205.2.3 5.2.3 字符型字符型字符型常量2)转义字符是一种特殊的字符常量。转义字符以反斜线“”开头的字符序列。转义字符具有特定的含义,不同于
14、字符原有的意义,故称“转义”字符。转义字符转义字符的意义ASCII代码n回车换行10t横向跳到下一制表位置9b退格8r回车13f走纸换页12反斜线符92单引号符39”双引号符34a鸣铃7ddd13位八进制数所代表的字符xhh12位十六进制数所代表的字符第20页/共73页215.2.3 5.2.3 字符型字符型字符型数据的输入与输出字符的输入输出可以调用函数scanf、printf、getchar和putchar。在使用scanf和printf函数调用时,格式控制说明为%c。如:char ch1,ch2,ch3;scanf(“%c%c%c”,&ch1,&ch2,&ch3);printf(“%c%
15、c%c”,ch1,ch2,ch3);在输入多个字符时,这些字符之间不能有空格,由于空格本身也是字符,它作为输入字符看待。a b c则ch1=a,ch2=,ch3=b注意:字符输入时,不需要单引号。第21页/共73页225.2.3 5.2.3 字符型字符型字符型数据的输入与输出每次调用getchar函数时,它会读入一个字符,并返回这个字符。例如:ch=getchar();getchar函数也不会在读入数据时跳过空格字符。putchar函数用来输出单个字符,例如:putchar(ch);scanf和printf可以一次输入输出多个字符,而getchar和putchar一次则只能输入输出一个字符wh
16、ile(ch=getchar()!=n);这段程序用于输入多个字符,当碰到回车换行时结束,这也是getchar函数的最常用的方法。第22页/共73页235.2.3 5.2.3 字符型字符型程序示例/*输入一串字符,以回车作为结束符,统计输入字符的个数*/#include void main(void)char ch;int number=0;printf(输入一串字符,以回车结束:);while(ch=getchar()!=n)/*如果字符不是回车,数量加1*/number+;printf(“一共输入了%d个字符n,number);输出结果输出结果输入一串字符,以回车结束:输入一串字符,以回车
17、结束:abcd efgh ijkl mnabcd efgh ijkl mn一共输入了一共输入了1717个字符个字符Press any key to continuePress any key to continue第23页/共73页245.3 5.3 运算符与表达式运算符与表达式运算符是描述对数据进行特定运算的符号,如+、*等。表达式是由运算符和运算项(操作数)组成的有意义的运算式子,最简单的表达式是常量和变量,较为复杂的表达式是由多个运算符和运算项构成。C语言的运算符不仅具有不同的优先级,而且具有结合性。在表达式中,各操作数参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性
18、的制约,以便确定是自左向右进行运算还是自右向左进行运算。第24页/共73页255.3 5.3 运算符与表达式运算符与表达式运算符种类运算符结合方向优先级逻辑运算符!从右向左高低位运算符算术运算符+、-、+、-*、/、%(双目)从左向右+、-(双目)移位运算符关系运算符、=、!=位运算符&、|逻辑运算符&条件运算符|?:赋值运算符=、+=、-=、*=、/=、%=从右向左逗号运算符,第25页/共73页265.3.15.3.1 赋值表达式赋值表达式赋值运算符 C语言将赋值作为一种运算,赋值运算符=的左边必须是一个变量,作用是把一个表达式的值赋给一个变量。赋值运算符的优先级较低,仅比逗号运算符高,它的
19、结合方向是从右向左。例如:x=2+3等价于x=(2+3)x=y=1等价于x=(y=1)第26页/共73页275.3.15.3.1 赋值表达式赋值表达式赋值表达式 用赋值运算符将一个变量和一个表达式连接起来的式子成为赋值表达式。赋值表达式的简单形式为:变量=表达式;表达式可以是常量、变量或较为复杂的表达式,例如:i=5;j=i;k=i+5*j;第27页/共73页285.3.15.3.1 赋值表达式赋值表达式赋值表达式 如果表达式的类型与变量的类型不同,那么赋值运算符会把表达式的值转化为变量的类型在赋值,例如:int i;float f;f=3;/*f is 3.0*/f=3.14;/*f is
20、3.14*/i=f;/*i is 3 and f is 3.14*/在赋值表达式中,赋值运算符右侧的表达式也可以是一个赋值表达式,例如:x=(y=2);第28页/共73页295.3.15.3.1 赋值表达式赋值表达式复合赋值运算符 C语言提供了一种复合赋值运算符,其一般形式为:变量 复合赋值运算符 表达式;exp作为一个整体参与计算,如:x*=y+5,等价于x=x*(y+5),而不是x=x*y+5。复合赋值运算符运行过程+=x+=exp等价于x=x+(exp)-=x-=exp等价于x=x-(exp)*=x*=exp等价于x=x*(exp)/=x/=exp等价于x=x/(exp)%=x%=exp
21、等价于x=x%(exp)第29页/共73页305.3.25.3.2 算术表达式算术表达式算法运算符 算术运算符分为单目运算符和双目运算符,单目运算符只需要一个操作数,而双目运算符需要两个操作数。典型的单目运算符使用方法 j=-1;双目运算符与我们平时接触的数学算术运算基本相同 单目运算符双目运算符+单目正号运算符-单目负号运算符加法类乘法类+加法运算符-减法运算符*乘法运算符/除法运算符%取余运算符第30页/共73页315.3.25.3.2 算术表达式算术表达式算法运算符 运算符+、-和*,其两端的运算项的类型可以都是整数或者都是实数,也可以使两者混合。计算机处理的过程是,先将整形操作数转化成
22、实型 当两个操作数都是整数时,运算符/只保留整数部分作为运算结果。因此,1/2的值是0而不是0.5。运算符%是整数取余运算符,如10%3的值是1。第31页/共73页325.3.25.3.2 算术表达式算术表达式算术运算符的优先级和结合性 算法运算符中单目运算符+和-优先级最高,其次是*、/和%,最低是双目运算符+和-,这一点与数学中的习惯相同。当同一优先级的运算符出现是,计算顺序应该根据其结合性确定。单目运算符+和-的结合性是从右到左,而其他算术运算符的结合性都是从左到右。例如:-+i 等价于-(+i)i*j/k 等价于(i*j)/ki+j-k 等价于(i+j)-k第32页/共73页335.3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据类型 表达式
限制150内