1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第三章,数据类型、运算符与表达式,1,程序设计=数据结构+算法,C,语言的数据结构是以数据类型形式出现的,2,常 量(在程序运行过程中,其值不能改变的量。,分为字面常量和符号常量,),字面常量或直接常量:,整常量:十进制 +3 123 -12 0 12,L 12l,(,3.0,不是,),八进制,以0开头,0123(十进制83)、-011(-9),十六进制,以0,x,开头,0,x123(,291,),-0 x12(-,18,),实常量:十进制小数点形式(,必须有小数点,),0.2、.2、+2.0、-2
2、0.0,(2不是),e,指数形式,1,e2、1E2 (,代表1,10,2,=100,),15,e2、1.5E3、5e-2,-.5e1,1E0,e,前后必须有数,,e,后必为整数,3,e、e3、E、2.1e3.5,错!,123.456,12.3456,e1,,1.23456e2,,0.123456e3,均等价,规范化形式(小数点左边有且只有一位非零数字,),3,字符常量:,a、A(,两者不同,)、5,转义字符:以反斜杠字符“”开头的字符序列。,意思是将“”后面的字符转换成另外意思。,n(,换行,将当前位置移到下一行开头,),r(,回车,将当前位置移到本行开头,),t(,水平制表,跳到下一个,
3、Tab,位置),b(,退格,将当前位置移到前一列),ddd,(1,到3位八进制数所代表的字符,),101,代表,ASCII,码(八进制)为101,,,即,ASCII,码(十进制)为65的字符,A,xhh,(1,到2位十六进制数所代表的字符,),x41,代表,ASCII,码(十六进制)为,41,,即,ASCII,码(十进制)为65的字符,A,0,代表,ASCII,码为0的控制字符,即“空操作,”,字符。,4,字符串常量:,一对双引号括起来的字符序列,如:,”,How do you do.,”,”,CHINA,”,”,a,”,printf,(,”,This is a program.,”,);,在
4、内存中 长度为6字符,注意:,a,与,”,a,”,不同,内存中,a a 0,char c=,”,a,”,;,是错的,没有字符串变量,字符串需用字符数组存放。,C,H,I,N,A,0,0,是,字符串结束标志,即,ASCII,码为0的空操作字符,以判断字符串是否结束。在写字符串时不必加,0,,系统自动加。,5,符号常量:,例3.1,#,define,PRICE,30,#define,PI,3.1416,main()main(),int,num,t;float r,s;,num=10;,scanf,(“%f”,t=num*,PRICE,;s=2*,PI,*r;,printf,(”t=%dn”,t);
5、printf,(“s=%fn”,s);,输出:,t=300,输入:1,输出,s=6.283184,6,变 量:,定义:类型、名字、初始化,int,i=1,j,k;,short,m,n;,long,c,d;,unsigned,u,v;,float,a=3.6,b=7.1;,double,x,y;,char,w1,w2=A;,变量名:由字母、数字和下划线组成,第一字符必为字母或下划线,sum,X2,x2,student_name,_file,正确,M.D,$123,#,abc,xy,3t,,不正确,注意,大小写字母认为是两个不同的字符,对变量“先定义,后使用”,告诉系统分配,内存空间,7,6种整
6、型变量:,有符号基本整型,signed,int,无符号基本整型,unsigned,int,有符号短整型,signed short,int,无符号短整型,unsigned short,int,有符号长整型,signed long,int,无符号短整型,unsigned long,int,其中,无符号整型变量中可以存放的正数的范围比一般整,型变量中正数范围扩大一倍。,例如:,int,a;(-3276832767),unsigned,int,b;(065535),C,语言没具体规定以上各类数据所占内存的字节数,只要求,long,型数据长度不短于,int,型,,short,型不长于,int,型。,8,
7、浮点型变量:,单精度(,float,),双精度(,double,),长双精度(,long double,),9,字符型变量:,将一个字符常量放到一个字符变量中,实际上并不是把该,字符本身放到内存中去,而是将该字符的相应,ASCII,代码放,到存储单元中。,这样使字符型数据和整型数据之间可以通用。,例一:,char,c1,c2;,c1=97;,c2=98;,printf,(“,%c,%c,n”,c1,c2);,a b,printf,(“,%d,%d,n”,c1,c2);,97 98,例二:,int,i;,char,c;,i=a;,c=97;,10,类型,内存中字节数,表示数的范围,有效数字,in
8、t,2字节(16位),-,3276832767-2,15,(2,15,-1),unsigned,2字节(16位),065535 0,(2,16,-1),long,4字节(32位),-2,31,(2,31,-1),float,4字节(32位),10,-38,10,38,约7位,double,8字节(64位),10,-308,10,308,约16位,char,1字节(8位),Turbo C,11,12,13,优先级 运算符 结合方向,1,(),-(指针结构成员运算符).(结构成员运算符)从左到右,2,一元运算,!,+-+-,*&,(,type),sizeof,从右到左,逻辑非 按位反 增1 减1
9、正 负 指针 地址 类型转 算长度,3,算术运算,*,(乘),/,(除),%,(求余数)从左到右,4,算术运算,+,(加),-,(减)从左到右,5 按位运算 (右移位)从左到右,6 关系运算 =从左到右,7 关系运算 =(相等)!=(不等)从左到右,8 按位与&从左到右,9 按位异 从左到右,10 按位或|从左到右,11 逻辑与&从左到右,12 逻辑或|从左到右,13 三元运算 条件运算?:,从右到左,14,赋值运算,=+=-=*=/=%=,&=|=,从右到左,15,逗号,(顺序求值),运算,,,从左到右,有两种用法的4个运算符,运算符 一元运算符 二元运算符,+正号 算术加法,-负号 算术减
10、法,*指针 算术乘法,(365页附录,C)&,地址 按位与,14,15,16,自增、自减运算符,+,i、-i,使用,i,之前,先增(减)1,i+、i-,使用,i,之后,再增(减)1,例:,i=3;,printf,(”%dn”,i+);,输出结果3,i=4,i=3;,printf,(”%dn”,+i);,输出结果4,i=4,i=3;,printf,(”%dn”,-i+);,输出结果-3,i=4,+,与-的结合方向是自右至左,-,i+,等价于-(,i+),,不是(-,i)+,注意:+与-的左右必须是变量,而不能是常量和表达式,5+,(,a+b)+,(-k)+,-(a+4),都是错的,例:,对于,i
11、3,k=i+;,执行后,k,值为3,,i,为4,k=+i;,执行后,k,值为4,,i,为4,17,18,376 以整数形式输出为-2,,i,的值也是-2。,19,20,21,22,23,24,/*,p66,ex0309:,求算术表达式的值*,/,(1),设,x=2.5,a=7,y=4.7,x+a%3*(int)(x+y)%2/4,2.5+7%3*(int)(2.5+4.7)%2/4,2.5+1*7%2/4,2.5+1/4,2.5,(2),设,a=2,b=3,x=3.5,y=2.5,(float)(a+b)/2+(int)x%(int)y,(float)(2+3)/2+(int)3.5%(in
12、t)2.5,5.0/2+3%2,25+1,3.5,25,/*,p66,ex0310:,写出程序运行结果 *,/,main(),int,i=8,j=10,m,n;,m=+i;,n=j+;,printf,(%d,%d,%d,%dnn,i,j,m,n);,输出结果,:,9,11,9,10,i=9,m=9,n=10,j=11,26,27,/*补充题:求算术表达式的值*/,1.7*2%3+5/2*4 ,14%3+2*4 2+8,10,2.3/5+1.3 0,+1.3,1.3,3.13%5+,d ,3+100,103,或,g,4.(b=5,b+,b-3,b*2),b=5,b=6,3,12,12,28,29,






