《第二章数据类型、运算符.ppt》由会员分享,可在线阅读,更多相关《第二章数据类型、运算符.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章 数据类型、运算符与表达式 2.1 常量和变量2.2 C的数据类型2.3 C的运算符及表达式2.1 常量和变量一、基本语法成份1.C语言的字符集字符是可以区分的最小符号,是构成程序的基础。(1)26个大小写英文字母:az,AZ(2)10个数字字符:09(3)标点符号:空格 !#%&*()_ -+=:;,./?|2.标识符标识符在程序中用来标识各种程序成份,命名程序中的一些实体,如变量、常量、函数、类型、标号等对象的名字,必须以英文字母或下划线开头,是字母、数字、下划线的序列。判断:i,a1,op,y_1,zhou_prg,max,sun,day,a.1,1computer,x+y,!ab
2、c,99999,$100,3c(1)预定义标识符 有特定的含义,如库函数的名字、预处理命令等。(2)用户定义标识符 由用户根据需要定义的标识符,用来给变量、数组、函数、文件等命名。注意:C语言允许用户将预定义标识符另作它用,但将使其失去系统规定的原意。3.关键字 关键字又称为保留字,由系统提供,用以表示特定的语法成份。关键字有特定的语法含义,不允许用户重新定义。auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,if,int,long,register,return,shor
3、t,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while二、常量1.常量的定义 在程序运行过程中,其值不能改变的量。2.常量的类型 整型、实型、字符型、字符串常量。字面常量和符号常量3.符号常量 用一个标识符来代表一个常量,通过宏定义预处理命令来实现。格式:define 标识符 常量 符号常量名是用户命名的标识符,一般大写。一旦定义,在程序中凡是出现常量的地方均可用符号常量名来代替。对使用了符号常量的程序在编译前会以实际常量替代符号常量。使用符号常量的好处:(1)含义清楚;(2)方便程序修改,
4、可以做到一改全改。三、变量1.变量的定义 在程序中其值可以改变的量,用标识符表示。2.变量的实质 一个变量代表了内存中的某个存储单元,变量名就是该存储单元的名字。注意:变量必须先定义后使用,其作用为:(1)保证程序中变量名使用正确;(2)每一个变量被指定为一确定类型,在编译 时就能为其分配相应的存储单元;(3)指定变量所属类型,便于编译时检查该变 量所进行的运算是否合法。3.变量的分类 整型变量、实型变量、字符型变量2.2 C的数据类型一、整型数据1.整型数据的分类 包括四种类型:基本型(int)、短整型(short int)、长整型(long int)和无符号型(unsigned).不同类型
5、的数据在计算机中所占用的字节数和取值范围不同。(1)int:-215215-1,即:-3276832767 2字节(2)short int:同int(3)long int:-231231-1 4个字节(4)unsigned int:值全部为正,065535 2个字节2.整型常量(1)十进制常量:用十进制数码表示数,不加 前缀。(2)八进制常量:用八进制数码表示数,加前 缀“0”(数字零)。如:0123,0275等。(3)十六进制常量:用十六进制数码表示数,加前缀0 x或0X(数字零和 字母x(X)。如0 x1A,0X8F等。整型常量有基本整型、短整型、长整型和无符号型。加后缀表示:l(或L),
6、u(或U)及其组合。3.整型变量 可分为基本整型、短整型、长整型和无符号型。int a,b;short int c;long d,e;4.整数在内存中的存储形式 最高位表示符号位,正数用原码表示,负数用补码表示,无符号数的所有位数都表示数值。5.整型数据的溢出各种整数类型都有各自的取值范围,一旦超出了这个范围,就不能正确地表示数据,这种情况称为“溢出”。includevoid main()int max,min;max=32767;min=max+1;printf(max=%d,min=%dn,max,min);二、实型数据(浮点型数据)1.实型常量 对一个实型常量,可以用两种形式表示它,即十
7、进制小数形式和指数形式。(1)十进制小数形式,如123.45,-0.001。(2)指数形式,其组成格式为:e(或E)其含义为:10注意:书写规则(1)尾数部分不能省略,即e(或E)前必须有数 据;(2)指数部分必须是整数;(3)尾数可以只有整数部分或只有小数部分;(4)指数、尾数都可以带符号,如省略符号则 隐含为正。2.实型变量 浮点型变量分单精度(float)、双精度(double)和长双精度(long double)。float a,b;double c,d;long double e,f;注意:实型常量在编译系统中作为double型来 处理。三、字符型数据1.字符常量一个字符常量是用单引
8、号括起来的字符,在内存中占一个字节的存储空间。共有256个不同的字符,有些是可见的;有些是不可见的,它们只起控制作用,如换行、回车等。2.字符变量 用来存放字符常量,用char表示。char c;3.字符在内存中的存放形式 字符在内存中是以ASCII码值存储。因此字符型和整型之间有相通性,这些相通性表现在:(1)字符型数据可以用整型形式输出;反之,一定范围内的整数也可以用字符形式输 出;(2)字符型和整型之间可以进行混合运算;(3)整型变量可以接收字符常量,字符变量也 可以接收整型数值,当然这都要在一定范 围之内。#includevoid main()int i,j;char c1,c2;c1
9、=a;c2=b;printf(“c1=%c,c1=%d;c2=%c,c2=%dn”,c1,c1,c2,c2);i=97;j=98;printf(“i=%d,i=%c;j=%d,j=%cn”,i,i,j,j);4.转义字符常量 也称反斜线字符,总是以反斜杠开头,后跟一个特定的字符,用来代表某一个特定的ASCII字符,也用单引号括起来。有三种情况:非显示字符(控制字符);可显示字符;字符的数值表示。#includevoid main()printf(“This is a programn”);printf(“this is b a 012 programn”);printf(“”firstseco
10、nd”);5.字符串常量 用一对双引号括起来的字符序列。在每一个字符串的结尾加一个字符串结束标志0,其ASCII码为0,是一个空操作。四、变量的初始化 C语言允许在定义变量的同时使变量初始化,也可以使被定义变量的一部分赋初值。int a=3;float r=3.14;char c=a;int a,b,c=10;int a=3,b=3,c=3;注意:初始化不是在程序编译时完成的,而是在程序运行时执行本函数时赋初值的。2.3 C的运算符及表达式 一、算术运算符及算术表达式1.算术运算符 +-*/%(1)%的运算对象是整数,其余均为整数、实 数;(2)双目运算符两边运算数的类型必须一致才能进行操作,
11、所得结果的类型与运算数的类型一致;(3)如果双目运算符两边的运算数的类型不一致,系统将自动进行转换,一致后再进行运算。运算数 运算数 转换结果 short int long int shortlong int long int intlong char int charint signed unsigned signedunsigned int float intdouble floatdouble float float floatdouble int double intdouble2.算术表达式(1)表达式 把常量、变量、函数和运算符按C语言的语法规则连接起来的式子叫表达式,必定有一个值
12、,即运算结果。(2)算术表达式 用算术运算符和一对圆括号将运算量连接起来的表达式称为算术表达式。注意:在算术表达式中,只要有一个数是 double型,则结果即为double型。3.算术运算符的优先级和结合性4.类型转换 类型转换有自动转换(又称隐含转换)与强制转换两种方式。(1)自动转换 由系统自动完成int usigned long double short,char float 这种转换是一种保值映射,在转换中数据的精度不受损失。(2)强制转换 强制类型转换通过类型转换运算进行。格式:(类型名)(表达式)将表达式的类型强制转换成类型名指定的类型。如:float x,y;(int)(x+y)
13、将表达式x+y的值强制转换成整型 强制类型转换在将高类型转换为低类型时,数据精度受损,是一种不安全的转换。强制类型转换是暂时性的,一次性的,并不永久改变所转换表达式的类型。如:int a;(double)a为双精度,a依然为整型量讨论:表达式计算(1)float x=2.5,y=4.7;int a=7;计算:x+a%3*(int)(x+y)%2/4(2)int a=2,b=3;float x=3.5,y=2.5;计算:(float)(a+b)/2 +(int)x%(int)y(3)int i=3;float f=1.0;double d=2.3;计算:10+a+i*f-d(1)2.5 (2)3
14、.5 (3)107.7二、赋值表达式1.赋值运算符和赋值表达式 格式:变量名=表达式 由赋值运算符组成的表达式称为赋值表达式。赋值运算时先计算右边表达式的值,然后将右边表达式的值赋给左边变量,即送给左边变量对应的存储单元,并以此作为整个赋值表达式的值。(1)赋值运算符的优先级只高于逗号运算符,且具有右结合性;(2)赋值运算符不是等号,没有相等的关系;(3)赋值运算符的左边只能是变量,不能是常 量或表达式;(4)赋值运算符右边的表达式还可以是一个赋 值表达式;(5)赋值表达式的值就是左边变量所取得的 值。2.复合赋值表达式 在基本赋值运算符“=”之前加上任一双目算术运算符及位运算符可构成复合赋值
15、运算符,又称带运算的赋值运算符。算术复合赋值运算符:+=、=、*=、/=、%=位复合赋值运算符:&=、|=、=、=、=复合赋值运算先进行所带运算,再进行赋值运算。复合赋值运算的优先级同赋值运算。举例:(1)int a=3;a+=2 等价于a=a+2(2)float x=1.2,y=2.1;y*=x+3.4 等价于y=y*(x+3.4)(3)int a=1,b=2;b/=a+=1,等价于b=b/(a=a+1)3.赋值运算中的类型转换 如果赋值运算符两边的类型不一致,则在赋值的时候要对右边表达式的类型进行转换,使之适应左边变量的要求。(1)将实型数据赋给整型变量时,舍弃实数的小 数部分。int i
16、;i=1.23;(2)将整型数据赋给单、双精度型变量时,数值 大小不变,但以浮点形式存储到变量中。float f=15;double d=15;则有:f=15.000000 (6个0)d=15.00 0 (14个0)(3)将字符型数据赋给整型变量时,由于字符数 据只占一个字节,而整型变量为两个字节,将字符的数据放整型变量的低8位,而对整 型变量的高8位进行符号扩展。l如果系统将字符处理成无符号的量或赋给 无符号整型变量,则将字符的8位放到低8 位,高8位补0。l如果所用系统将字符处理成带符号的量,若字符最高位为0,则高8位补0;若字符最高位为1,则高8位补1。(4)将整型数据赋给字符型变量时,
17、只将其低8 位原封不动地送到字符型变量。(5)将基本整型数据赋给长整型变量时,基本整 型数据放长整型变量低16位,高16位用符 号位扩充。反之将长整型数据赋给整型变 量时,只需将长整型数据的低16位原封不动 送整型变量中。(6)将无符号整型数据赋给长整型变量时,不存 在符号扩展的问题,只需将高位补0即可。将无符号整型数据赋给一个占字节数相同 的整型变量时,将无符号整型数据原样送整 型变量中,并将最高位当作符号位,如果数 据超出相应的整型范围,将产生数据错误。如果将整型数据赋给占字节数相同的无符 号整型变量,也是原样照赋,最高位作数值 处理。三、自增和自减运算符1.作用 使运算对象的值增1或减1
18、,实质是一种赋值操作。2.说明(1)、是单目运算符,运算对象可以是整型变量也可以是实型变量,不能是常量和表达式,因为不能给其赋值。(2)、既可做前缀,也可以做后缀运 算符。+i 先加后用i+先用后加举例:int i,j;i=2;j=i+;j=i;j=+i;i+;i+;j=I;(3)结合性是自右向左(4)使用时注意避免歧义性,在一个表达式中不 要使用同一变量的自增或自减运算。举例:i=1;(i+)+(i+)+(i+)(+i)+(+i)+(+i)四、运算符的组合问题运算符的组合问题 C语言的运算符一般为一个字符,有的由两个字符组成,在表达式中出现多个字符时如何组合呢?C编译系统在处理时原则上尽可能自左而右将若干字符组合成一个运算符,标识符、关键字也按同样的原则进行处理。如i+j,解释为(i+)+j,非i+(+j)。如要表示i+(+j),必须加括号。五、逗号运算符和逗号表达式 “,”是一种特殊的运算符,用逗号将表达式连接起来的式子称为逗号表达式。具体形式如下:表达式1,表达式2,表达式n “,”的结合性是从左向右,因此逗号表达式将从左到右进行运算,最后一个表达式的值就是此逗号表达式的值。在所有运算符中,逗号的优先级最低。作业:上机实习:P66 习题