数据类型、运算符与表达式c语言

上传人:wuy****ng 文档编号:247424860 上传时间:2024-10-18 格式:PPT 页数:42 大小:273KB
返回 下载 相关 举报
数据类型、运算符与表达式c语言_第1页
第1页 / 共42页
数据类型、运算符与表达式c语言_第2页
第2页 / 共42页
数据类型、运算符与表达式c语言_第3页
第3页 / 共42页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第2章 数据类型、运算符与表达式,2.1 预备知识;,2.2 C语言的数据类型;,2.3 常量和变量;,2.4 整型数据;,2.5 实型数据;,2.6 字符型数据;,2.7 算术运算与算术表达式;,2.8 赋值运算与赋值表达式;,2.9 逗号运算符和逗号表达式;,2.1 预备知识,计算机中数的表示及进制转换,二进制、八进制、十进制、十六进制,各种进制之间的转换,各种进制之间的转换(整数),二进制、八进制、十六进制转换成十进制,方法:按权相加,十进制转换成二进制、八进制、十六进制,原理:,方法:连续除以基,从低到高记录余数,直至商为0,例 把十进制数59转换成二进制数,59,2,29,2,14,2,7,2,3,2,1,2,0,(59),10,=(111011),2,1,1,0,1,1,1,1 1 1 0 1 1,余,余,余,余,余,余,例 把十进制数159转换成八进制数,159,8,19,8,2,8,0,(159),10,=(237),8,2 3 7,余 7,余 3,余 2,例 把十进制数459转换成十六进制数,459,16,28,16,1,16,0,(459),10,=(1CB),16,1 C B,余11,余12,余 1,二进制与八进制之间的转换,二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制,八进制转换成二进制:用3位二进制数代替每一位八进制数,例 (1101001),2,=(,00,1,101,001),2,=(151),8,例 (246),8,=(,0,10,100,110),2,=(10100110),2,000 0,001 1,010 2,011 3,100 4,101 5,110 6,111 7,二进制与十六进制之间的转换,二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制,十六进制转换成二进制:用4位二进制数代替每一位十六进制数,例,2,=(,00,11,0101,0111,1101),2,=(357D),16,例 (4B9E),16,=(,0,100,1011,1001,1110),22,0000 0,0001 1,0010 2,0011 3,0100 4,0101 5,0110 6,0111 7,1000 8,1001 9,1010 A,1011 B,1100 C,1101 D,1110 E,1111 F,字节和位,内存以字节为单元组成,每个字节有一个地址,一个字节一般由8个二进制位组成,每个二进位的值是0或1,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,8,9,10,.,数值的表示方法原码、反码和补码,原码:最高位为符号位,其余各位为数值本身的绝对值,反码:,正数:反码与原码相同,负数:符号位为1,其余位对原码取反,补码:,正数:原码、反码、补码相同,负数:最高位为1,其余位为原码取反,再对整个数加1,原码,反码,补码,+7,00000111,00000111,00000111,-7,1,0000111,1,1111000,1,1111001,+0,00000000,00000000,00000000,-0,10000000,11111111,00000000,数的范围,01111111,11111111,(-127+127),01111111,10000000,(-127+127),01111111,1000000,(-127+127),(用一字节表示数),负数补码转换成十进制数:最高位不动,其余位取反加1,例 补码:11111001,取反:10000110,加1: 10000111=-7,2.2,数据类型,数据类型总表,C,数,据,类,型,基本类型,构造类型,指针类型,空类型void,定义类型typedef,字符类型char,枚举类型enum,整 型,实型,单精度型float,双精度型double,数组,结构体struct,共用体union,短整型short,长整型long,整型int,数据类型决定:,1. 数据占内存字节数,2. 数据取值范围,3. 其上可进行的操作,2.3,常量和变量,2.3.1 常量,1.常量的概念 在程序运行过程中,其值不能被改变的量称为常量。,2.常量的分类,(1)整型常量 例:123,(2)实型常量 例:4.56,(3)字符常量 例:a,(4)符号常量 例:PI,2.3.2 变量,1.变量的概念,在程序运行过程中,其值可以被改变的量称为变量。,2.变量的两个要素,(1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。,(2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。,.标识符命名规则,有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。,有效长度:随系统而异,但至少前个字符有效。如果超长,则超长部分被舍弃。,例如:由于student_name和student_number的前个字符相同,有的系统认为这两个变量,是一回事而不加区别。,在TC V2.0中,变量名(标识符)的有效长度为个字符,缺省值为。,C语言的关键字不能用作变量名。,注意,:C语言对英文字母的大小敏感,即同一字母的大小写,被认为是两个不同的字符。,习惯上,变量名和函数名中的英文字母用小写,以增加可读性。,例:,在C语言中,变量名total与变量名TOTAL、ToTaL、tOtAl等是同一个变量吗?,标识符命名的良好习惯见名知意,:,所谓“见名知意”是指,通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。,例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。,4.变量的定义与初始化,在语言中,要求对所有用到的变量,必须先定义、后使用;且称在定义变量的同时进行赋初值的操作为变量初始化。,2.4 整型数据,2.4.1 整型常量,整型常量即整常数,在语言中可用三种形式表示:,(1)十进制。例如10、36。,(2)八进制(以数字开头)。例如012。,(3)十六进制(以数字+小写字母x开头)。例如0x36。,2.4.2 整型变量,1.分类,根据占用内存字节数的不同,整型变量又分为类:,(1)基本整型(类型关键字为int)。,(2)短整型(类型关键字为short int)。,(3)长整型(类型关键字为long int)。,(4)无符号整型。无符号型又分为无符号基本整型(unsigned int)、无符号短整型(unsigned short)和无符号长整型(unsigned long)三种,只能用来存储无符号整数。,2.占用内存字节数与值域,上述各类型整型变量占用的内存字节数,随系统而异。在16位操作系统中,一般用字节表示一个int型变量,且long型(字节)int型(字节)short型(字节)。,显然,不同类型的整型变量,其值域不同。,例:PC机中的一个int型变量,其值域为-2,15,(2,15,-1),即-3276832767;一个unsigned型变量的值域为:0(2,16,-1),即065535。,可用,sizeof,(,类型标识符)测量。,如何定义整型变量?,int i;/*定义为整型变量*/,i10; /*给i赋以整数10*/,int a10;,short b30;,long c 20;,unsigned int number20;,例:,#define PRICE 30,main(),int num,total;,num=10;,total=num*PRICE;,printf(total=%d,total);,2.5 实型数据,2.5.1 实型变量,语言的实型变量,分为两种: (1)单精度型。类型关键字为float,一般占字节(位)、提供位有效数字。 (2)双精度型。类型关键字为double,一般占个字节、提供1516位有效数字。,例 float a;,a=111111.111; /* a=111111.1*/,double b;,b=111111.111; /* b=111111.111*/,2.5.2 实型常量,实型常量即实数,在语言中又称浮点数,其值有两种表达形式:,(1)十进制形式。例如3.14、9.8。,(2)指数形式:,(e,或E之前必须有数字;指数必须为整数)如12.3e3 ,123E2, 1.23e4 ,e-5,例:,#define PRICE 30.52,main(),float num,total;,num=10.89;,total=num*PRICE;,printf(“total=%f”, total);,2.6 字符型数据,2.6.1 字符常量,字符常量的定义,用一对单引号括起来的单个字符,称为字符常量。,例如,,如,a A ? n 101,字符常量的,值,:该字符的,ASCII,码值,如 A65, a97, 048 , n10,转义字符,反斜线后面跟一个字符或一个代码值表示,如 101 -A 012 -n,376 -, x61 -a,60 -0 483 -(,),= !=),逻辑运算符:(! & |),位运算符 :( | &),赋值运算符:(= 及其扩展),条件运算符:(?:),逗号运算符:(,),指针运算符:(* &),求字节数 :(sizeof),强制类型转换:( (类型) ),分量运算符:(. -),下标运算符:(),其它 :( 如函数调用运算符( ) ),1.五种基本算术运算符,+、-、*、/、%,(1)关于除法运算/,C语言规定:两个整数相除,其商为整数,小数部分被舍弃。例如,5 / 2 = 2。,(2)关于求余数运算,要求两侧的操作数均为整型数据,否则出错。,2.运算符的优先级与结合性,1)按运算符的优先级高低次序执行。例如,先乘除后加减。,2)如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按语言规定的结合方向(结合性)进行。,例如,算术运算符的结合方向是“自左至右”,即:在执行“a b + c”时,变量b先与减号结合,执行“a - b”;然后再执行加c的运算。,3.自增、自减运算符+ -,作用:使变量值加1或减1,种类:,前置 +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,说明:,+ - 不能用于常量和表达式,如,5+,(a+b)+,优先级: + - -* / % -+ -,2.8 赋值运算与赋值表达式,1.赋值运算,赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。,例,a=3;,d=func();,c=d+2;,y = (float)5 / 2;,2.复合赋值运算,C语言规定的10种复合赋值运算符如下:,+=,-=,*=,/=,%=;,&=,=,|=,=;,a+=3,a=a+3,x*=y+8,x=x*(y+8),x%=3,x=x%3,说明:,结合方向:,自右向左,左侧必须是变量,不能是常量或表达式,赋值表达式的值与变量值相等,且可嵌套,赋值转换,规则:使赋值号右边表达式值,自动,转换成其左边变量的类型,例,3=x-2*y;,a+b=3;,例,float f;,int i;,i=10;,f=i;,则,f=10.0,例 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),/,表达式值为5,a,b,c值为5,/ b=5;a=5,/,表达式值11,c=6,a=11,/,表达式值10,a=10,b=4,c=6,/,表达式值5,a=5,b=10,c=2,2.9 逗号运算符和逗号表达式,形式:,表达式1,表达式2,表达式n,结合性:从左向右,逗号表达式,的值:等于表达式n的值,用途:常用于循环for语句中,例 a=3*5,a*4,a=3*5,a*4,a+5,例 x=(a=3,6*3),x=a=3,6*a,例 a=1;b=2;c=3;,printf(“%d,%d,%d”,a,b,c);,printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表达式值60,/a=15,表达式值20,/,赋值表达式,表达式值18,x=18,/,逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!