您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 02 数据类型(2)
大连理工大学软件学院大连理工大学软件学院本章要点数据类型概念整型、存储、进制字符型算术运算符大连理工大学软件学院数据类型常量与变量整数类型浮点类型字符类型数值类型混合运算算术运算符及算术表达式逗号运算符及逗号表达式数据类型二大连理工大学软件学院字符常量(1)用单引号包含的一个字符是字符型常量(2)只能包含一个字符‘a’,’A’,‘1’‘abc’、“a”字符型数据大连理工大学软件学院字符常量有些以“\”开头的特殊字符称为转义字符含义ASCII代码\n换行,将当前位置移到下一行开头10\t水平制表(跳到下一个Tab位置)9\b退格,将当前位置移到前一列8\r回车,将当前位置移到本行开头13\f换页,将当前位置移到下页开头12\a发出铃声7\\代表一个反斜杠字符“\”92\′代表一个单撇号字符39\″代表一个双撇号字符34\ddd1到3位八进制数所代表的字符\xhh1到2位十六进制数所代表的字符字符型数据大连理工大学软件学院例2.5转义字符的使用#includestdio.hvoidmain(){printf(abc\tde\rf\tg\n);printf(h\ti\b\bjk\n);}打印机上的显示结果:fabcgdehjik显示屏上的运行结果:fgdehjk大连理工大学软件学院字符变量字符型变量用来存放字符常量,注意只能放一个字符。字符变量的定义形式如下:charc1,c2;在本函数中可以用下面语句对c1,c2赋值:c1=‘a’;c2=‘b’;一个字符变量在内存中占一个字节。字符型数据大连理工大学软件学院字符数据在内存中的存储形式及其使用方法一个字符常量存放到一个字符变量中,实际上并不是把该字符字型放到内存中去,而是将该字符的相应的ASCII代码放到存储单元中。这样使字符型数据和整型数据之间可以通用。注意:一个字符数据既可以以字符形式输,也可以以整数形式输出以字符形式输出时,系统先将存储单元中的ASCII码转换成相应字符,然后输出。以整数形式输出时,直接将ASCII码作为整数输出。也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算。字符型数据大连理工大学软件学院例2.6向字符变量赋予整数。#includestdio.hvoidmain(){charc1,c2;c1=97;c2=98;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);}说明:在第4和第5行中,将整数97和98分别赋给c1和c2,它的作用相当于以下两个赋值语句:c1=′a′;c2=′b′;因为’a’和’b’的ASCII码为97和98运行结果:ab9798大连理工大学软件学院例2.7大小写字母的转换#includestdio.hvoidmain(){charc1,c2;c1=’a’;c2=’b’;c1=c1-32;c2=c2-32;printf(“%c%c″,c1,c2);}说明:程序的作用是将两个小写字母a和b转换成大写字母A和B。从ASCII代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码大32。C语言允许字符数据与整数直接进行算术运算。运行结果:AB大连理工大学软件学院字符数据在内存中的存储形式及其使用方法说明:有些系统(如TurboC,VC++)将字符变量定义为signedchar型。其存储单元中的最高位作为符号位,它的取值范围是-128~127。如果在字符变量中存放一个ASCII码为0~127间的字符,由于字节中最高位为0,因此用%d输出字符变量时,输出的是一个正整数。如果在字符变量中存放一个ASCII码为128~255间的字符,由于在字节中最高位为1,用%d格式符输出时,就会得到一个负整数。字符型数据大连理工大学软件学院字符串常量字符串常量是一对双撇号括起来的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以输出一个字符串,如printf(“Howdoyoudo.”);字符型数据大连理工大学软件学院字符串常量‘a’是字符常量,“a”是字符串常量,二者不同。如:假设C被指定为字符变量:charcc=‘a’;c=“a”;c=“CHINA”;结论:不能把一个字符串常量赋给一个字符变量。字符型数据大连理工大学软件学院C规定:在每一个字符串常量的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。C规定以字符’\0’作为字符串结束标志。如:如果有一个字符串常量”CHINA”,实际上在内存中是:CHINA\0它占内存单元不是5个字符,而是6个字符,最后一个字符为’\0’。但在输出时不输出’\0’。字符串常量字符型数据大连理工大学软件学院混合运算:整型(包括int,short,long)、浮点型(包括float,double)可以混合运算。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算.说明:这种类型转换是由系统自动进行的。数值型数据间的混合运算大连理工大学软件学院再看2.3整型数据的溢出#includestdio.hvoidmain(){shorta,b;a=32767;//b=a+1;//printf(“%d,%d\n”,a,b);printf(“%d,%d\n”,a,a+1);}运行结果:32767,32768数值型数据间的混合运算大连理工大学软件学院C运算符和C算术表达式简介1.C语言的运算符有以下几类:⑴算术运算符(+-*/%)⑵关系运算符(><==>=<=!=)⑶逻辑运算符(!&&||)⑷位运算符(~|∧&)⑸赋值运算符(=及其扩展赋值运算符)⑹条件运算符(?:)⑺逗号运算符(,)算术运算符和算术表达式大连理工大学软件学院(8)指针运算符(*和&)(9)求字节数运算符(sizeof)(10)强制类型转换运算符((类型))(11)分量运算符(.-)(12)下标运算符([])(13)其他(如函数调用运算符())算术运算符和算术表达式大连理工大学软件学院2.C语言的表达式有以下几类:(1)算术表达式:如2+6.7*3.5+sin(0.5)(2)关系表达式:如x0,yz+6(3)逻辑表达式:x0&&y0(表示x0与y0同时成立,&&是逻辑运算符,代表“与”)(4)赋值表达式:如a=5.6(5)逗号表达式:如a=3,y=4,z=8算术运算符和算术表达式大连理工大学软件学院算术运算符和算术表达式1.基本的算术运算符:+(加法运算符,或正值运算符。如:3+5、+3)-(减法运算符,或负值运算符。如:5-2、-3)*(乘法运算符。如:3*5)/(除法运算符。两个整数相除的结果为整数两个整数相除的结果为整数,如:5/3结果为1)%(模运算符,或称求余运算符,%两侧均应为整型数据,如:7%4的值为3)。算术运算符和算术表达式大连理工大学软件学院2.7算术运算符和算术表达式算术运算符和算术表达式2.算术表达式和运算符的优先级与结合性用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为C算术表达式。运算对象包括常量、变量、函数等。例如:a*b/c-1.5+′a′是一个合法的表达式大连理工大学软件学院算术运算符和算术表达式C语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。C规定了各种运算符的结合方向(结合性)算术运算符的结合方向为“自左至右”,即先左后右。算术运算符和算术表达式大连理工大学软件学院算术运算符和算术表达式3.强制类型转换运算符可以利用强制类型转换运算符将一个表达式转换成所需类型。一般形式:(类型名)(表达式)说明:表达式应该用括号括起来。在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。算术运算符和算术表达式大连理工大学软件学院例2.8强制类型转换。#includestdio.hvoidmain(){floatx;inti;x=3.6;i=(int)x;printf(x=%f,i=%d\n,x,i);}说明:有两种类型转换,一种是在运算时不必用户指定,系统自动进行的类型转换,如3+6.5。第二种是强制类型转换。当自动类型转换不能实现目的时,可以用强制类型转换。运行结果:x=3.600000,i=3大连理工大学软件学院课堂练习输入三角形的底(int)和高(int),计算三角形的面积(float)并输出。注意除与整除大连理工大学软件学院c/b/a(c/b)/a-1d/b%a(d/b)%a0-a*d(-a)*d38a%-b*c(a%(-b))*c14a/c+-20/-a(a/c)+((-20)/(-a))10-d%c-b/a*5+5((-d)%c)-((b/a)*5)+5157-a%(3+b)7-(a%(3+b))出错(分母为0)算术表达式等价表达式表达式的值课堂练习已知:a,b,c,d均是整型变量,其值是:a=2,b=-3,c=7,d=-19;试分别写出下列各表达式的值.大连理工大学软件学院4.自增、自减运算符作用是使变量的值增1或减1如:++i,--i(在使用i之前,先使i的值加(减)1)i++,i--(在使用i之后,使i的值加(减)1)算术运算符和算术表达式大连理工大学软件学院i++与++i的区别:++i是先执行i=i+1后,再使用i的值;i++是先使用i的值后,再执行i=i+1。例如:①j=++i;i的值先变成4,再赋给j,j的值为4②j=i++;先将i的值3赋给j,j的值为3,然后i变为4算术运算符和算术表达式大连理工大学软件学院注意:(1)自增运算符(++),自减运算符(--),只能用于变量,而不能用于常量或表达式,(2)++和--的结合方向是“自右至左”。(3)自增(减)运算符常用于循环语句中使循环变量自动加1。也用于指针变量,使指针指向下一个地址。(4)使用++和--时,为避免二义性,最好采取大家都能理解的写法,可以加一些“不必要”的括号,如(i++)+j。算术运算符和算术表达式++i++与(++i)++大连理工大学软件学院思考:a=3;a=(++a)+(++a)+(++a);可移植性(平台有关)Turboc++\BorlandC++:18Turboc:15gcc\Visualc++\c#:16Java:15大连理工大学软件学院逗号运算符:将两个表达式连接起来,又称为“顺序求值运算符”。如:3+5,6+8一般形式:表达式1,表达式2求解过程:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。逗号表达式的值为14逗号运算符和逗号表达式大连理工大学软件学院例:逗号表达式a=3*5,a*4分析:赋值运算符的优先级别高于逗号运算符,因此应先求解a=3*5。a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式。如:(a=3*5,a*4),a+5先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a+5得20,即整个表达式的值为20。逗号运算符和逗号表达式大连理工大学软件学院逗号表达式的一般形式可以扩展为表达式1,表达式2,表达式3,……,表达式n它的值为表达式n的值。逗号运算符是所有运算符中级别最低的例:①x=(a=3,6*3)②x=a=3,6*3赋值表达式,将一个逗号表达式的值赋给x,x的值等于18逗号表达式,包括一个赋值表达式和一个算术表达式,x的值为3,整个逗号表达式的值为18。逗号运算符和逗号表达式大连理工大学软件学院注意:并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。如:printf(“%d,%d,%d”,a,b,c);“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数printf(“%d,%d,%d”,(a,b,c),b,c)“(a,b,c)”是一个逗号表达式,它的值等于c的值。逗号运算符和逗号表达式
本文标题:02 数据类型(2)
链接地址:https://www.777doc.com/doc-3093130 .html