数据类型及其输入输出.ppt

上传人:za****8 文档编号:3269522 上传时间:2019-12-10 格式:PPT 页数:53 大小:312.51KB
返回 下载 相关 举报
数据类型及其输入输出.ppt_第1页
第1页 / 共53页
数据类型及其输入输出.ppt_第2页
第2页 / 共53页
数据类型及其输入输出.ppt_第3页
第3页 / 共53页
点击查看更多>>
资源描述
第二章数据类型及输入输出,内蒙古科技大学实训中心,本节重点,数据类型常量与变量不同类型的数据的输入输出,引入数据类型,1、数据是程序处理的基本对象。2、程序中数据分为变量或常量。3、每个变量或常量都有确定的数据类型。4、每种数据类型都有确定的存储长度、取值范围及允许的操作。5、程序中所有数据必须指定其数据类型。,常量,在程序中,常量是指常数或其值不能被改变的量。1、直接常量:如:12,123.5,1.23E7,a,A,8,“hello”,“a”2、符号常量,即用一个标识符代表一个常量。一般用大写字母表示。符号常量在其作用域内不能改变,也不能再被赋值。定义符号常量的方法如:definePI3.14159,#definePI3.1415926voidmain()floatr,c,s;r=2;c=2*PI*r;s=PI*r*r;printf(“c=%f,s=%f”,c,s);,常量的类型,、整型常量有三种表示方法:十进制整数123,-784八进制整数0123=十六进制整数八进制和十六进制只能表示无符号整数长整数表示为:123l123L无符号整数表示为:123u,常量分为:整型常量、实型常量、字符常量、字符串常量,、实型常量,也称浮点数。两种表示方法:()十进制小数形式由数字和小数点组成(必须有小数点)1.123,3.1415;()指数形式123e5,123E5都表示但是1.23E7为规范化的指数形式。输出指数形式的数据时,按规范化的指数形式输出。(即小数点左边应有一位非零数字),3、字符常量(Characterconstants)由一对单引号括起的单个字符,称为字符常量。如:a,9,+,b退格单引号n换行ddd13位八进制数t制表符xhh12位十六进制数反斜杠字符a响铃”双引号r回本行开头,转义字符(EscapeSequences)表示控制字符或具有特定用途的字符。,在内存中,字符数据并不是把字符本身放到内存单元中,而是将该字符的相应ASCII码(二进制的形式)放到存储单元中。,如:有两个字符型数据A和a,4、字符串常量(StringLiterals)由一对双引号括起的字符序列称为字符串常量,例如:“Howdoyoudo?”“china”C规定以字符0作为字符串结束的标志。在内存中所占字节数为实际字符个数+1如字符串常量“china”在内存中存储形式如下:,变量,1、定义:其值可以改变的量称为变量。程序中的变量必须先定义后使用。2、变量的定义、赋值(初始化);intsum;chara,b;floatr,s,l;doublex,y;定义了变量后,变量并没有值,需要给其赋值。也可以在定义变量的同时给出初值,对变量进行初始化。例如:inti;i9;/*先定义整型变量i,然后赋初值9*/,floatr=1.5;/*定义实型变量r的同时,赋其初值1.5*/charanswer=y;/*同上*/也可以使被定义的变量的一部分赋初值。如inta,b,c=5;表示定义a,b,c为整型变量,并且对c进行初始化,使c值为5。注意:如对几个变量同时赋初值为5,应写成inta=5,b=5,c=5;或者inta,b,c;a=b=c=5;,而不能写成inta=b=c=5;,3、对变量名的要求。变量名要做到“见名知意”,不要使用简单的字符作变量名,以增加程序的可读性。变量名一般用小写字母表示,长度与所用系统有关(c,合法标识符,非法标识符,变量的类型,变量分为:整型变量、实型变量、字符型变量1、整型变量存放形式整形变量在内存中以二进制的形式存放的,一个整形变量在内存中占个字节。,10,变量i(inti10;),变量在内存中的实际存放情况,机器内部,数值是以补码表示的。正数:其补码和原码相同。负数:其补码为:该数的绝对值的二进制数按位取反加1。,-35,取反,加1,最高位,最高位是符号位,其为0时是正数,为1时是负数。,分类根据数值的范围可以把变量定义成基本类型、短整型和长整型。基本类型:用int标识短整型:用shortint标识(short)长整型:用标识(long)进一步修饰,修饰符(无符号数)signed(有符号数)如果既不指定unsigned也不指定signed则隐含为有符号数(signed),signed可以不写。,例:unsignedlonginta,b;,ANSI标准定义的整数类型,2、实型变量类型(内存中字节数)有效数字float(4字节)67位double(8字节)1516位longdouble(16字节)1819位定义方法:(单精度)float变量名(双精度)double变量名,3、字符型变量定义方法:char变量名列表charc1,c2,c3;取值范围ASCII码字符集中的字符。charc1,c2;c1=e;c2=3注意:字符串常量不能被赋值到字符变量中,因为字符变量只能容纳一个字符。,区别:a“a”,数据的输入和输出,语言中,在stdio.h头文件中定义了标准输入输出函数。、printf()函数格式:printf(“格式控制字符串”,输出项列表);功能:将输出项按给定的控制格式输出。例如:printf(“%f”,sum);2、scanf()函数格式:scanf(“格式控制字符串”,输入项列表);功能:将输入项按给定的控制格式输入。例如:scanf(“%d%d”,includevoidmain()charch=a;inta=65;floatx=123.456;printf(”%c,%d,%3cn”,ch,ch,ch);printf(”%c%d%3dn”,a,a,a);printf(”%f,%-7.2f,%10.4fn”,x,x,x);,输出结果是:a,97,_aA65_65123.456001,123.46_,_123.4560,例1:,includevoidmain()inta,b;charch1,ch2;floatf,r;scanf(“%d%d”,输入时:125785ab23.456,612.97,例2:,本节重点,掌握运算符的使用确定表达式的类型、值不同类型的数据的转换,运算符,一、运算符:能够完成某种操作(运算)的符号。二、根据运算符的运算对象(操作数)的多少,运算符可分为:单目(一元)运算符i+-n双目(二元)运算符a+bd/e三目(三元)运算符xy?x+3:y*9(条件运算符),表达式,一、C表达式:由运算符和运算对象构成的式子。运算对象可以是常量、变量、函数或表达式。二、表达式的书写原则(1)C语言的表达式只能采用线性的形式书写。例如:应写成1/3+i+j*j*j。应写成(a+b)/(c+d)*e+f。,(2)C语言的表达式只能使用C语言中合法的运算符和操作数,对有些操作必须调用库函数完成,而且运算符不能省略。例如:r2应写成3.14159*r*r。应写成0.5*a*b*sin(alph)。|xy|应写成fabs(xy)。y+2X应写成y+pow(2,x)。,#include,三、表达式在求值时,遵循以下规则(1)优先级:不同优先级的运算符出现在同一表达式时,按运算符的优先级的高低次序执行。例如:d=a+b*c;/*先乘后加*/(2)结合性:是指表达式中出现同优先级的操作符时,该先做哪个操作符的规定。结合方向:“自左向右”、“自右向左”例如:a+b-c从左至右d=a=b=3从右至左,四、表达式的分类C语言表达式种类很多,有多种分类方法。我们一般依据运算的特征将表达式分为:算术表达式,如a+b*2.0-3.0/5.0。关系表达式,如x=y,关系表达式可以认为是逻辑表达式的特殊情况。逻辑表达式,如(x=2)j的值为3(首先将i的原值赋给j,然后i自身再加1)j=+i;j的值为4(i自身先加1,然后再将加1后的值赋给j),#includevoidmain()inti,j,k;i=3;j=i+;k=+i;printf(“i=%d,j=%d,k=%dn”,i,j,k);,范例:,输出结果:i=5,j=3,k=5,2、在表达式中如果有2个以上的“+”或“-”连写在一起,则编译器首先识别前面两个+或-为自增或自减操作符。例如:,在使用自增或自减运算符时注意如下几个问题:,1、自加或自减运算只能用于变量,不能用于常量或表达式;错误:25+(i+j)+例如-i+,只能理解为-(i+)。因为(-i)+为表达式,表达式是不能自加自减的。,i3;j-i+;printf(“%d”,j);,输出结果应为-3,而不是是-4。,inta=1,b=5,c;c=a+b;c=a+b;c=a+b;,正确:c=6,错误:+不是双目运算符,正确:a+b,3、表达式中包含有自增、自减运算时,容易出错,务请小心。如有:i=1;则:,类似上面分析,应为3,当然表达式计算完成后i的值同样改变为4。,(+i)+(+i)+(+i)的值为多少呢?是9(=2+3+4)吗?不对!,计算时先对整个表达式扫描,i先自增3次,由1234,如此计算结果为4+4+4,等于12。,(i+)+(i+)+(i+)的值又是多少呢?,赋值运算符和赋值表达式,1、赋值运算符:=使用方法:变量表达式赋值运算时先计算右边表达式的值,然后将右边表达式的值赋给左边变量,并以此值作为整个赋值表达式的值。(1)赋值运算的优先级为第14级,次低。如:inti,a,b,c,p;i=3+5%2;/*先计算3+5%2,得到4,然后将4赋给i*/。p=(a+b)/c;p=a+b/c;,(2)理解以下两赋值表达式的含义:y5;n5;xy;nn1;(3)赋值运算符具有“自右向左”的结合性,赋值运算符右边的表达式也可以是赋值表达式:例如:ab5;等同于a(b=5);,2、复合赋值运算算术复合赋值运算符:+=、=、*=、/=、%=位复合赋值运算符:scanf(%d,例:判断整数的正负。,逗号运算符和逗号表达式,一、逗号运算是双目运算,一般形式如下:表达式1,表达式2先计算表达式1,再计算表达式2,并以此作为整个表达式的值。如:a=2,a*6,先计算a=2,再计算a*6,并以此作为整个表达式的值,表达式的值为12。,二、逗号运算的优先级最低,结合自左向右。逗号表达式的更一般使用形式为:表达式1,表达式2,表达式3,表达式n先计算表达式1,再计算表达式2,再计算表达式3,再计算表达式n的值,并以此作为整个表达式的值。如:表达式x=a=3,6*x,6*a,a+x的值为。逗号运算又称顺序求值运算。,6,includevoidmain()inti,j,k;i=1,j=2,k=3;printf(“%d%d%dn”,i,j,k);,includevoidmain()inti,j,k;i=1;j=2;k=3;printf(“%d%d%dn”,i,j,k);,并不是任何地方出现的逗号都是逗号运算符,例如:printf(“%d%d%dn”,i,j,k);(是参数分隔符),如果写成:printf(“%d%d%dn”,(i,j,k),j,k);相当于:printf(“%d%d%dn”,k,j,k);,求字节数运算,运算符:sizeof(数据类型标识符)或sizeof(表达式)求字节数运算是单目运算,操作数可以是类型名,也可以是变量、表达式,用以求得相应类型或数据所占的字节数。此运算的优先级与取地址运算优先级相同。例如:sizeof(float)值为4,单精度类型占4个字节sizeof(2*3)值为2,算术表达式2*3是int型,数据的类型转换,一、系统自动进行的类型转化由系统自动完成类型转换,转换的规则如下:intunsignedlongdoubleshort,charfloat纵向箭头方向表示必定要进行的转换,short型、char型数据必定先转换成int型,float型数据必定先转换成double型,再进行运算。横向箭头方向表示类型自动转换的方向。由低向高转换,int型最低,double型最高。,二、赋值时的类型转换(1)将实型数据赋给整型变量时,舍弃实数的小数部分。如:inti;i=1.23;/*结果i的值为1*/(2)将整型数据赋给单、双精度型变量时,数值大小不变,但以浮点形式存储到变量中。(3)将字符型数据赋给整型变量时,由于字符数据只占一个字节,而整型变量为两个字节,将字符的数据放整型变量的低8位,而对整型变量的高8位进行扩充。,(4)将基本整型数据赋给长整型变量时,基本整型数据放长整型变量低16位,高16位用符号位扩充。反之将长整型数据赋给整型变量时,只需将长整型数据的低16位原封不动送整型变量中。(5)将无符号整型数据赋给长整型变量时,不存在符号扩展的问题,只需将高位补0即可。将无符号整型数据赋给一个占字节数相同的整型变量时,将无符号整型数据原样送整型变量中,并将最高位当作符号位,如果数据超出相应的整型范围,将产生数据错误。如果将整型数据赋给占字节数相同的无符号整型变量,也是原样照赋,最高位作数值处理。,三、强制类型转换强制类型转换通过类型转换运算进行。格式:(类型名)(表达式)功能:将表达式的类型强制转换成类型名指定的类型。如:floatx=5.2,y=6.3;intz;z=(int)(x+y);(int)(x+y)将表达式x+y的值强制转换成整型强制类型转换在将高类型转换为低类型时,数据精度受损,是一种不安全的转换。强制类型转换是暂时性的,一次性的,并不永久改变所转换表达式的类型。如:inta=7;doubleb;b=(double)a+5;(double)a为双精度,a依然为整型量。,作业,课本40页习题补充:课本21页转义字符的使用及其含义。,谢谢大家!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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