您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C语言程序设计基础 第2章 基本数据及其运算
2.1基本类型数据C语言中,基本数据有三种:整数:整数是不带小数点和指数符号的数据。例如:29浮点数:浮点数是带有小数点或指数符号的数值数据。例如:3.65.6e+02字符:字符型数据表示一个字符,占用一个字节(8个二进制位)。例如:’a’2.1.1整型数据按其数值范围大小划分成三种:1.基本型:用int标记2.短整型:用shortint标记,简写为short3.长整型:用longint标记,简写为long按值内部的最高位不同理解又有两类:1.带符号:存储单元最高位作为符号位2.不带符号:存储单元中全部二进位用作存放数据本身,而没有符号位。表示方法:unsignedint、unsignedshort、unsignedlong例如inti,j;/*定义带符号的整型变量*/unsignedshortk;/*定义无符号短整型变量*/longm,n;/*定义带符号的长整型变量*/注意:同一类型在不同版本占用字节数不同,不特殊说明的指的都是TCshortintlongTurboC224VC++6.0244类型版本出错指数:ANSI标准定义的整数类型类型比特数取值范围int16-32768~32767short16-32768~32767long32-2147483648~2147483647unsignedint160~65535unsignedshort160~65535unsignedlong320~4294967297整型变量的定义对变量强制类型定义的目的:让编译为其分配内存单元。各种变量的定义一般在函数的开始部分例#includestdio.hvoidmain(){inta,b,c,d;unsignedintu;/*变量强制类型定义a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d\n”,c,b+u);}运算结果:a+u=22,b+u=-14由此可见:不同类型的整型数据可以进行混合运算出错指数:整型常量的书写形式十进制整数:如0,123,-45。八进制整数:以数字0开头,并由0~7组成的数字符序列。如:0123表示八进制整数,其值等于十进制整数为:1*82+2*81+3=83十六进制整数:以0x(或0X)开头,并由十六进制数的数字符组成的数字符序列。表示十六进制数的数字符有16个:0~9和A、B、C、D、E、F,其中六个字母也可以小写。如:0x123表示十六进制整数,其值等于十进制整数为:1*162+2*161+3=291;0xabc,其值等于10*162+11*161+12=2748。长整型整数和无符号整数的表示long型整数:在整型常数后加字母L或l,即为long型整型常数。例如:0L、132L等。不带符号的整型:在整型常数后加字母U或u,即为unsigned型整型常数。例如:1U、122U等。不带符号的long型整数:在整型常数后同时加上字母U和L,表明该整型常数是unsignedlong型。例如:22UL、35LU等。出错指数:2.1.2浮点型数据按数值范围大小和精度不同分成三种:1.单精度型:用float标记--在内存中占用4个字节(32个二进位),7个十进位有效数字,能表示绝对值约为10-37~1038。如:floatx,y;2.双精度型:用double标记--在内存中占用8个字节(64个二进位),16个十进位有效数字,能表示绝对值约为10-307~10308。如:doubleresult;3.长双精度实型:用longdouble标记--longdouble型数据一般占用比double型数据更多的字节,通常为16个字节。但在VC中,也只占用8个字节。如:longdoublez;浮点数的一般书写格式正负号整数部分.小数部分指数部分注意:(1)整数部分和小数部分可以任选,但不可同时没有。(2)小数点和指数部分不可以同时都没有。(3)指数部分是以一个字母e或E(代表10)开头,后跟一个整数。例如:合法的浮点常数:7.、.457、1E5、1.5e-6不正确的浮点常数:E4、.E5、4.0E出错指数:(4)在浮点数后加f表示float;加L(或l)表示longdouble型,在浮点数的最后不加任何字母,C系统认为此数是double型。例如:1.5表示double型1.5f表示float型1.5L表示longdouble型出错指数:注意要点:(2)浮点数运算有一定的计算误差例如:要判别两个浮点型变量x和y是否相等正确:fabs(x-y)1e-6/*x与y非常接近则认为相等*//*fabs()是求绝对值的函数*/错误:x==y/*x与y不可能完全相等*/(1)接受的浮点数与书写会有一定的误差例如:floatx=1.23456789;因x只能存储约7位有效数字,浮点数1.23456789所对应的二进制形式中,超出存储位数的那些位不会被存储。出错指数:(3)未加说明,系统将实型常量作为双精度处理floatf;f=2.45678*4532.65系统将两数按双精度运算,然后将前7位赋给实型变量f,缺点:浪费系统资源,降低运算速度;解决的办法:在数的后面加f,如2.45678f,系统将其按单精度数运算。(4)实型常量赋给float或double类型变量时,根据变量的类型截取实型常量的有效位。#includestdio.hvoidmain(){floatf1;doublef2;f1=111111.111;f2=111111.111111;printf(“f1=%f\nf2=%lf\n”,f1,f2);}输出结果:f1=111111.109375f2=111111.1111112.1.3字符型数据字符型数据用于表示一个字符值。字符型数据的内部表示是字符的ASCII代码(以二进制形式)。例如:'A'的ASCII值为65,内存中存的是:1000001字符型数据的类型符用char来标记。如:charc1,c2;字符型数据可看作是-128~127或0~255的一个整数。普通字符常量普通字符常量:用单引号括住的一个字符。例如:'a'、'B'、'$'例字符型数据与整型数据通用的示例程序。#includestdio.hvoidmain(){charc1,c2;c1=97;c2=c1+1;/*字符型数据与整型数据混合运算*/printf(c2=%c,c2'sASCIIcode=%d\n,c2,c2);}c2=b,c2'sASCIIcode=98转义字符常量转义字符常量:用\字符或\字符列来标记。例如:\r:回车符光标位置移到当前行首\t:制表符使输出位置横向跳至下一个输出区开始列。屏幕自左向右每8列为一个输出区。…..........................一个制表位\b退格(Backspace键)\n换行符,光标位置移到下一行首\\反斜杠符\\'单引号符'\双引号符\0字符串结束符\dddddd为1至3个8进制数字如,'\12'也能表示换行符'\n‘\xhhhh为1至2个16进制数字如,'\x41'也能表示大写字母'A'需要牢记:例:#includestdio.hvoidmain(){printf(“abc\tde\rf\tg\n”);printf(“h\ti\b\bjk\n”);}运行结果:fgdehjk注意:\t在跳到下一制表位的过程中用填充它经过的位置字符串常量字符串常量:用双引号括起来的一串字符。例如:Iamastudent.、China、a普通字符与字符串的区别形式字符数存储输入输出普通字符单引号括住1单个变量%c或%d字符串双引号括住0~n数组%s出错指数:注意要点:字符型与字符串常量的区别例如:charc='a'charc=a又如:字符串“China”在内存中的存储形式(需要6个字节)China\0出错指数:2.2数据运算运算符的优先级优先级用来标志运算符在表达式中的运算顺序。优先级高的先运算,优先级低的后运算。如:x-y*z相当于x-(y*z)运算符的结合性在优先级相同情况下,表达式的计算顺序由结合性来确定。大多数运算符的结合性是从左至右,只有单目、三目和赋值运算符的结合性是从右至左的。如:x=a+b-c;a=b=c=1.5;x=(a+b-c)a=(b=(c=1.5))出错指数:2.2.1赋值运算简单赋值形式:变量=表达式赋值表达式的结果是等号左边变量的值(1)计算表达式,并将计算的值赋给变量;(2)如表达式类型与变量类型不一致,将表达式值的类型自动转换成变量的类型;(3)将表达式的值赋给变量。说明:赋值运算符的结合性是“自右至左”。出错指数:2.2.1赋值运算例1:intx;doubley;y=x=3.5;例2:i=4+(j=7);例3:i=(j=3)+(k=8);x的值为3,y的值为3.0表达式的值为3.0使j值为7,i值为11,表达式的值为11使j值为3,k为8,i为11,表达式的值为11变量赋初值1.定义的同时给变量赋初值如:inta=3;floatb=3.1415;charc=‘x’;2.定义变量时,可以对其中的一部分变量赋初值如:inta=3,b,c,d=8;3.把一个常量赋给不同变量时,最好分别进行。如:inta=b=c=3;错误而应写为:inta=3,b=3,c=3;4.初始化是在程序运行时,执行本函数时赋以初值的。如:inta=3;相当于:inta;a=3;赋值运算-复合赋值运算在赋值运算符“=”之前加上其他运算符,可构成复合运算符。复合运算符:+=、-=、*=、/=、%=、=、=、&=、^=、|=例:x+=5.0等价于x=x+5.0(将“x+”移到“=”右侧)x*=u+v等价于x=x*(u+v)a+=a-=b+2等价于a=a+(a=a-(b+2))出错指数:例#includestdio.hvoidmain(){inta=12,b;b=(a+=a-=a*a);printf(“a=%d,b=%d\n”,a,b);}运算结果:a=-264,b=-264a+=a-=a*aa=a-a*a12-12*12-132a=a+(-132)-132+(-132)-264出错指数:2.2.2算术运算-一般运算符单目运算符:+(取正)、-(取负)双目运算符:+(加)、-(减)、*(乘)、/(除)、%(求余)说明:(1)两个整数相除结果为整数(取整),若有一个数为浮点数,则结果为浮点数。(2)求余运算符(%):要求参与运算的两个分量均为整型数据,如5%3=2。求余运算所得结果的符号与被除数的符号相同。如:-5%3=-2,5%-3=2。(3)加、减、乘、除和求余运算都是双目运算符,结合性都是从左至右的。取正(+)、取负(-)是单目运算符,结合性是从右至左。优先级:+(取正)、-(取负)高于*、/、%高于+(加)、-(减)。出错指数:例:整型数据除法运算#includestdio.hvoidmain(){inta,b,c;a=5;b=3;c=a/b;printf(“c=%d\n”,c);}出错指数:运算结果:c=1例实型数据除法运算#includestdio.hvoidmain(){floata,b,c;a=5;b=3;c=a/b;printf(“%f\n”,c);}运算结果:1.666667算术运算-自增和自减运算符++i前缀形式,表示在引用变量i之前,先使i加1,以加1后的i值为运算结果;--i前缀形式,表示在引用变量i之前,先使i减1,以减1后的i值为运算结果;i++后缀形式,表示在引用变量i之后,才使i加1,即以增1前的i值为运算结果;i--后缀形式,表示在引用变量i之后,才使i减1,即以减1前的i值为运算结果。自增/自减运算符-例例如:i=4;j=++i;i=4;j=i++;i=4;j=--i;i=4;j=i--;i结果为5,j的结果为5i结果为5,j的结果为4i结果为3,j的结果为3i结果为3,j的结果为4例#includestdio.hvoidmain(){inti,j;i=3;j=
本文标题:C语言程序设计基础 第2章 基本数据及其运算
链接地址:https://www.777doc.com/doc-3399259 .html