《数据类型和表达式.ppt》由会员分享,可在线阅读,更多相关《数据类型和表达式.ppt(96页珍藏版)》请在三一办公上搜索。
1、主讲教师:贾澎涛,C/C+语言程序设计,第二章 数据类型和表达式,本章主要内容,本章介绍C语言的基础,包括:数据类型运算符和表达式均是程序设计的基本知识为什么讨论这些知识?,2,通常程序要对数据进行操作处理:处理的对象是数据通过运算符和表达式进行操作,第2章 数据类型和表达式,2.1 词法构成字符集标识符关键字注释符,3,重点,ANSI C标准规定的C语言关键字共32个,所有C关键字都必须小写标识符由132个字符组成,第一个字符必须是字母或下画线,标识符不能与C关键字相同,并区分大小写。C语句以分号结尾,分号是C语句的组成部分。C语句包括简单语句(即表达式语句)、复合语句和空语句。,4,例题解
2、析,1.下列四个叙述中,正确的是。A)C程序中的所有字母都必须小写 B)C程序中的关键字必须小写,其他标识符不区分大小写 C)C程序中的所有字母都不区分大小写 D)C语言中的所有关键字必须小写2.下面属于C语言保留字的是_。A)Int B)typedefC)ENUM D)unien,5,你能回答下面问题吗?,3.以下叙述正确的是_A)可以把define和if定义为用户标识符B)可以把define定义为用户标识符,但不能把if定义为用户标识符C)可以把if定义为用户标识符,但不能把出define定义为用户标识符D)define和if都不能定义为用户标识符4.以下选项中合法的用户标识符是。A)lo
3、ng B)_2Test C)3Dmax D)A.dat,6,5.下列标识符中正确的一组是_A)name,char,_abc,A$B)abc.c,5bytes,_USA,_54321C)print,const,type,defineD)include,integer,Double,short_int6.下面的单词中属于C语言保留字的是_A)Long B)break C)For D)struction,7,数据类型,基本类型,构造类型,指针类型(),空类型(void),字符型(char),数值类型,枚举类型(enum),数组类型(),结构体类型(struct),共用体类型(union),整型(sh
4、ort,int,long,unsigbed),实型,单精度型(float),双精度型(double),2.2数据类型,8,重点,C语言提供了五种基本数据类型,即char,int,float,double和void。数据类型决定了内存的分配模式,即不同的数据类型所占的内存字节数是不同的。内存分配模式不是C语言本身的规定,而是由宿主机硬件决定的。不同的数据类型允许的数值范围也是不同的,超出了允许的数值范围,就会得到错误的结果。C编译系统不具检查此类错误的能力。C语言对整型和字符型不区分,可以混合使用。,9,例题解析,1.C语言中允许的基本数据类型包括。A)整型、实型、逻辑型B)整型、实型、字符型C
5、)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型2.C语言中能用八进制数表示的数据类型为A)字符型、整型 B)整型、实型C)字符型、实型、双精度型D)字符型、整型、实型、双精度型,10,你能回答下面问题吗?,2.3常量与变量,常量常量 程序运行过程中不能被改变的量。整数在计算机中是准确表示的,可以用十进制、八进制和十六进制数表示。当用八进制数表示时,第一位数字前面必须加0;当用十六进制数表示时,第一位数字前而必须加0 x:无符号整数的末尾必须加字母u或U;长整数的末尾必颁加字母I或L。字符型常数是用单引号括住的单个字符。用转义字符表示不可显示字符。转义字符以“”开头,后跟一个特定的字母或八
6、进制数或十六进制数表示的ASCII代码值。,11,用八进制时,前面可以也可以不加数字0;用十六进制数时,前面必须加字母x。字符串常数是用双引号括住的一串字符。当两个双引号连写时表示零字符串。C语言将所有的实数都视为双精度型数。双精度数只能用十进制数表示。在计算机中是近似表示的。双精度数用定点数形式表示时,小数点不可缺少;用浮点数形式表示时,E前面必须有数字(带不带小数点均可),E后面只能是整数,不能带小数点。,12,符号常数是用标识符表示的常数,它具有变量的外表和常量的内涵。用#define定义的符号常数没有类型和值的含义。在预编译时由编译系统将宏名用宏体替换。define是编译预处理命令,不
7、属于C语言关键字。用const定义的符号常数既有值又有类型的含义。该定义是在编译阶段完成的。,13,例题解析,1.下列属于C语言合法的字符常量是_ A)97 B)“A“C)t D)”0”,14,你能回答下面问题吗?,2.3.2 变量,1.变量的有关概念在程序运行过程中,其值改变的数据,称为变量,变量用标识符表示,称为变量名。变量必须“先定义后使用”系统为变量分配存储单元,存储变量的值。编写程序时通过变量名来存、取变量值。,15,例如:有变量a它的值是510,2.变量定义,变量定义的一般格式:【类型修饰符】数据类型说明符 变量列表;例如:int i,j;long k,m;float x,y;ch
8、ar ch1,ch2;,16,必须使用合法的标识符作变量名不能使用关键字为变量命名,3.变量的初始化,允许在说明变量的时候对变量赋初值。例如:int a=5,b=10+2;double x=23.568,y;char ch1=a,ch2=66,ch3=142;表示定义变量并对变量存储单元赋值。错误的初始化:int a=3+b,b=5;float m=n=23.16;,17,例题解析,1.若有以下定义和语句:int u=010,v=0 x10,w=10;printf(“%d,%d,%dn”,u,v,w);则输出结果是:A)8,16,10 B)10,10,10C)8,8,10 D)8,10,10,
9、18,你能回答下面问题吗?,2.4 指针和指针变量,main()float x;int y;,19,2.4.1 指针和指针变量的概念,变量的两个物理意义,变量的内容,变量的地址,19,指针和指针变量的概念,main()int a,b,c;a=5;b=3;c=a+b;,20,200020012002200320042005,abc,8,利用变量名存取数据的方式称为“直接存取”方式。,20,C 语言还提供了对内存单元的“间接存取”方式,21,5,3,2004,a和b相加的结果(*p=a+b)存放到变量p所指向的内存单元中去。此时c称为指针变量p的目标变量。,p=&c,8,main()int a=5
10、,b=3,c,*p;p=,变量的地址称为变量的指针存放地址的变量称为指针变量,21,指针变量的定义,main()int a,*p=,22,2004,2000,指针变量初始化,22,2.5 运算符和表达式,主要内容:算术运算符和算术表达式赋值运算符和赋值表达式关系运算符和关系表达式逻辑运算符和逻辑表达式位运算符和位运算表达式条件运算符和条件表达式逗号运算符和逗号表达式其他运算符及其运算,23,运算符的有关概念,作用:对运算对象完成规定的操作运算类型:按运算对象分:单目、双目、三目按功能分:算术、赋值、关系、逻辑条件、逗号、位、其他,24,运算符的优先级和结合性,优先级指各种运算符号的运算优先顺序
11、例如:算术运算优先于关系运算 算术运算中先*/后+-,25,结合性指运算符号和运算对象的结合方向分为:从左向右(左结合)和从右向左(右结合)例如:算术运算符为左结合 a-b+4 赋值运算符为右结合 a=b=5(),本章涉及的运算符,+-*/%+-+-=+=-=*=/=%=&=|=?:,&sizeof(数据类型标识符),26,表达式的有关概念,什么是表达式由运算符将运算对象连接成的式子,它描述了一个具体的求值运算过程。计算表达式的值按照运算符的运算规则求值求值时注意运算符的优先级和结合性表达式值的类型自动转换强制转换,27,例如:,表达式:150+b*212.456 b=(+a)-2a/=a*=
12、(a=2)f=abc-a|+b&c+max=ab?a:b a=3,a+=3,a*a 1/(float)a+6,28,算术运算,算术运算符的优先级,29,没有乘方运算符,要计算a3要写作 a*a*a 的连乘,或用标准库函数 pow(a,3)“/”的运算对象可为各种类型数据,但是当进行两个整型数据相除时,运算结果也是整型数据“%”要求运算对象必须是整型数据,功能是求两数相除的余数,余数的符号与被除数的符号相同。,自增自减运算,+-是单目运算符有前缀和后缀两种形式 前缀形式:先自增(自减)再引用;后缀形式:先引用再自增(自减);功能:前缀形式+a 等价于 a=a+1-a 等价于 a=a 1 后缀形式
13、 a+等价于 a=a+1 a-等价于 a=a 1,31,例如:,当 a5 时+a 表达式的值为 6,且 a6 a+表达式的值为5,且 a6 b=+a 等价于 a=a+1;b=a 表达式的值为6,且 a=6,b=6 b=a+等价于 b=a;a=a+1 表达式的值为5,且 a=6,b=5,32,说明:,+和-的运算对象只能是变量(或运算结果是变量的表达式),不能是常量(或运算结果是数值的表达式)。例如:5+、(a+2)+不合法。具有右结合性,结合方向为从右到左。例如:a+等价于-(a+)如果有多个运算符连续出现时,C系统尽可能多的从左到右将字符组合成一个运算符例如:i+j 等价于(i+)+j-i+
14、-j 等价于-(i+)+(-j),33,赋值运算,赋值运算符(右结合)=+=-=*=/=%=&=|=赋值表达式将表达式的值存入变量对应的内存单元中m=12b=(+a)-2 m%=3+n 等价于 m=m%(3+n)x*=(x=5),34,说明:,赋值号左边必须是变量,右边可以是C语言任意合法的表达式例如:n=t+210 等价于:a=(b=(b*c)10)赋值号与数学中的等号含义不同例如:数学中 a=b 等价于 b=a C语言中 a=b 不等价于 b=a,35,关系运算,关系运算符(左结合)=c 等价于 a=(b=c)与(a=b)=c 不等价关系运算符优先于赋值,低于算术,36,说明:,关系运算的
15、结果应该是逻辑值。C语言用数值用 1 表示逻辑真,0 表示逻辑假例如:75 的值是 1,57 的值是 0 ab的值是 0,ab 的值是1即关系表达式的值:0 或1 实型数可进行大于或小于比较,但通常不进行=或!=的关系运算,37,逻辑运算符,逻辑运算符&|!逻辑运算符的运算规则,38,逻辑表达式,逻辑表达式用逻辑运算符将运算对象连接成的式子 例如:0&b a&b|c&d a|b-5|c/4!x+y=z 逻辑运算符的优先级 和结合性:!是单目运算符,右结合,高于算术&和|是双目运算符,左结合,高于赋值运算符,低于关系运算符,39,逻辑运算规则,从左到右依次进行逻辑计算运算对象为非0表示逻辑真运算
16、对象为 0 表示逻辑假逻辑运算的结果为 0 或 1例如设:a=15,b=0,c=-2 a&b&c 结果为0 a|b|c 结果为1(a+c)|b&c 结果为1,40,逻辑运算规则(续),运算按照从左至右的顺序进行,一旦能够确定逻辑表达式的值,就立即结束运算逻辑运算的短路性质例如设:a=1,b=0,c=-2a&b&c,41,(a+)|+b&-c,为 0,运算终止,表达式值为 0,为非0,运算终止,表达式值为 1且a为2,b为0,c为-2(b,c保持原值),关系与逻辑运算符的应用,表示数学公式abc 判断a,b,c三条线段能否组成一个三角形 a,b不同时为负,42,a+bc&a+cb&b+ca,a=
17、0|b=0!(a=0)|(a=0&b=0&b=0),ab&bc,条件表达式运算,条件运算符:?:条件表达式的一般形式 表达式1?表达式2:表达式3例如:m=10&b-20?a:b x=3+a5?100:200,43,C语言中唯一的三目运算符,要正确区分用?和:分隔的表达式涉及条件运算符的优先级与结合性,条件运算符优先级,条件运算符优先级高于赋值、逗号运算符,低于其他运算符 例如:m=10&b-20?a:b x=3+a5?100:200,44,等价于:(mn)?(x):(a+3),等价于:(a+=10&b-20)?a:b,等价于:x=(3+a5)?100:200),条件运算符的结合性,条件运算符
18、具有右结合性当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。,45,例如:wx?x+w:xy?x:y 与 wx?x+w:(xy?x:y)等价 与(wx?x+w:xy)?x:y 不等价,逗号表达式运算,逗号表达式的一般形式 表达式1,表达式2,表达式n 逗号表达式的值从左向右,依次对表达式求值,最后得到表达式n 的值就是逗号表达式的值,46,例如:a=5,a+,a*3 表达式值为 18,且a=6 t=1,t+5,t+表达式值为 1,且t=2 x=(a=3*5,a*4)赋值表达式的值为60,且x=60,a=15,位运算符,
19、&|,47,位运算符的运算对象只能是整型数据或字符型数据,不能是实型数据运算对象一律按二进制补码参加运算,并按位进行运算位运算的结果是一个整型数据,低于单目、算术运算符,高于其他运算符,低于单目、算术和关系运算符,高于其他运算符,位逻辑运算符的运算规则,假设ai和bi均是一个二进制位(bit),48,例如:假设a=10,b=010 求a&b、a|b、ab、a,程序如下:,main()int a=10,b=010;printf(%d%dn,a,49,输出结果:8 102-11,0000 0000 0000 1010&0000 0000 0000 1000 0000 0000 0000 1000即
20、:a&b的值是8,移位运算,例如:ab-1 等价于(a+8)(b-1),50,例如:假设a=10,b=2,求ab-1,main()int a=10,b=2;printf(%d%dn,ab-1);,输出结果:40 9,请自行分析运行结果,取地址运算符&,为单目运算符运算对象只能是变量 运算结果是变量的存储地址 例如有定义:int a,student;char ch;可以对变量a、ch、student 进行&运算:&a&ch&student,51,长度运算符 sizeof,为单目运算符运算对象只能是变量名或数据类型标识符 运算结果为该变量或该数据类型的长度,52,main()int a=5;dou
21、ble x;printf(%d%d,sizeof(int),sizeof(a);printf(%d%d,sizeof(double),sizeof(x);printf(%d%dn,sizeof(float),sizeof(char);,输出结果:2 2 8 8 4 1,运算中数据类型的转换,1.数据类型的自动转换转换原则:自动将精度低、表示范围小的运算对象类型向精度高、表示范围大的运算对象类型转换,53,例如有定义:int a;char ch;表达式:a-ch*2+35La-ch*2+35.,2.数据类型的强制转换,强制转换的一般形式(类型名)表达式例如:(int)(b+3*x)%3 1/(f
22、loat)a+6,54,注意:(float)22/5 与(float)(22/5)不同错误的类型转换:(int)b=a+5 b=int(3*a),3.赋值表达式中的类型转换,=小数部分自动补0,55,=自动舍去实型表达式的小数部分(注意不进行四舍五入)=自动截取表达式值的低字节赋值,舍去高字节=自动给高字节补0 或补1,重点,运算符的优先级和结合性类型转换+与-(前缀与后缀不同)条件表达式位运算sizeof,例题解析,1.设x为int型变量,则执行以下语句后,x的值为_x=10;x+=x-=x-x;A)10 B)20 C)40 D)302.以下合法的赋值语句是_A)x=y=100 B)d-;C
23、)x+y;D)c=int(a+b);3.若已定义X和Y为double型,则表达式:X=1,Y=x+3/2的值是_ A)1 B)2 C)2.0 D)2.5.,4.在以下一组运算符中,优先级最高的运算符是_ A)=10 or A=10|A=10|A=10&A=0,7.设x,y,z,t均为int型变量,则执行以下语句 x=y=z=1;t=+x|+y t的值为_ A)不定值 B)2 C)1 D)0 8.设a=1,b=2,c3,d4则表达式 a b?a:c d?a:d的结果为_ A)4 B)3C)2 D)1,9.假定w、x、y、z、m均 为int型变量,有如下程序段:w=1;x=2;y=3;z=4;m=
24、(wx)?w:x;m=(my)?m:y;m=(mz)?m:z;则该程序运行后,m的值是 A)4 B)3 C)3 D)1,10.设 int b=2;,表达式(b1)的值是_ A)0 B)2 C)4 D)811.以下程序的输出结果是_。main()int x=05;char z=a;printf(“%dn”,(x&1)&(zz);A)0B)1C)2D)3,12.语句printf(“abrehiyboun”);的输出结果是_ A)abrehiybou B)abrehiybou C)rehiyou D)abrehiybou(说明:b是退格符)13.以下程序的输出结果是main()int a=5,b=4
25、,c=6,d;printf(%dn“,d=ab?ac?a:c:b);A)5 B)4 C)6 D)不确定,14.已知i、j、k为int型变量,若从键盘输入:1,2,3,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是_。A)scanf(2d2d2 dtt,&i,j,&k);B)scanf(ddd,&i,j,k);C)scanf(d,d,d”,i,j,k);D)scanf(i=d,j=d,k=d-t,&i,&j,&k);,15.若有以下程序段 int m=0 xabc,n=0 xabc;printf(“%X%xn”,m,n);执行后输出结果是 A)0Xabc 0 xabc B)0
26、xABC 0Xabc C)ABC abc D)abc abc,16.设有以下程序段:int x=2002,y=2003;printf(“%dn”,(x,y);则以下叙述正确的是_A)输出语句格式说明符的个数少于输出项的个数,不能正确输出B)运行时产生错误信息C)输出值为2002D)输出值为2003,17.有以下定义语句double a,b;int w;long c;若各变量已正确赋值,则下列选项中正确的表达 式是 A)a+=a+b=b+B)w%(int)a+b)C)(c+w)%(int)a D)w=a&b,18.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|-10&x-y10
27、D)(x-y)*(x-y)100,19.有以下程序 main()char a,b,c,d;scanf(%c,%c,%d,%d,若运行时从键盘上输入:6,5,65,66。则输出结果是_ A)6,5,A,B B)6,5,65,66 C)6,5,6,5 D)6,5,6,6,20.有以下程序段int m=0,n=0;char c=a;scanf(%d%c%d“,若从键盘上输入:10A10,则输出结果是_ A)10,A,10 B)10,a,10 C)10,a,0 D)10,A,0,填空题,1.以下程序的输出结果是_。main()unsigned short a=65536;int b;printf(“%
28、dn”,b=a);2.若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b 中的值是_c=(a-=(b-5);c=(a%11)+(b=3);,3.表示“整数x的绝对值大于5”时值为“真”的C语言表达式是 _4.设x为int型变量,与逻辑表达式!x等价的最简单的C语言关系表达式为_5.设y为int型变量,请写出判断y为奇数的关系表达式_6.若已知a=10,b=20,则表达式!ab的值为_,7.若想通过以下输入语句给a赋于1,给b赋于2,则输入数据的形式应该是_ int a,b;scanf(“a=%b,b=%d,9.若有语句 int i=-19,j;j=i%4;printf(
29、“%dn”,j);则输出结果是_10.有以下语句段int n1=10,n2=20;printf(“”,n1,n2);要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。n1=10n2=20,11.以下程序的输出结果是。main()int a=0a+=(a=8);printf(%dn,a);12.有以下程序:#include main()char c;while(c=getchar()!=?)putchar(-c);程序运行时,如果从键盘输入:Y?N?,则输出结果为_,13.有以下程序#include main()char ch1,ch2;int n1,n2;ch1=getchar
30、();ch2=getchar();n1=ch1-0;n2=n1*10+(ch2-0);printf(“%dn”,n2);程序运行时输入:12;,执行后输出结果是_。,练习题,1已知字母A的ASC码为十进制的65,则下面程序的输出是()main()char ch1,ch2;ch1=A+5-3;ch2=A+6-3;printf(”%d,%cn”,ch1,ch2);A67,D BB,C CC,D D不确定的值,2设int型占2字节,则unsigend int 所能表示的数据范围是 A065535 B-3276832767 C165536 D0327673在C语言中,设 int 型占2字节,下列不正确
31、的int型常数为 A32768 B0 C037 D0 xaf,4在C语言中不同数据类型的长度是 A固定的 B由用户自己定义的 C任意的 D与机器字长有关的5下列四组(八进制或十六进制数)常数中,正确的一组是 A016 0 xfb 017 B0abc 017 0 xa C010 x11 0 x16 D0A12 7FF-123,6下列四组整型常量中,合法的一组是 A160 0 xffff 011 B-0 xcdf 01a 0 xe C-01 986012 0668 D-0 x48a 2e5 0 x7在C语言中,合法的字符常数是 A084 B x43 C84 D”0”,8下列不正确的转义字符是 A
32、B”C074 D09下列四个叙述中,错误的是A在C程序中,无论是整数还是实数,都能被准确的表示B在C程序中,变量名代表存储器中的一个位置C静态变量的生存期与整个程序的运行期相同DC语言中的变量必须先说明后引用,10当用#define X 23.6f定义后,下列叙述正确的是 AX是实型常数 BX是实型变量 CX是一串字符 DX是字符串常数11当用const int A=9定义后,下列叙述正确的是 AA是整型常数 BA是整型变量CA是字符型常数 DA是不定类型常数,12有以下定义:char a;int b;float c;double d;则表达式a*b+d-c值的类型为A)float B)int
33、 C)char D)double13下列变量定义中合法的是:A)short _a=1-.le-1;B)double b=1+5e2.5;C)long do=0 xfdaL;D)float 2_and=1-e-3;,14若已定义int a,b;,则语句:printf(%d,(a=2)的输出结果是:A无输出 B结果不确定 C-1 D115当c的值不为0时,下列选项中能正确将C的值赋给变量a和b的是:A)c=b=a B)(a=c)|(b=c)C)(a=c)&(b=c)D)a=c=b,16设有如下变量定义:int i=8,k,a,b;unsigned long w=5;double x=1.42,y=
34、5.2;则以下符合C语言语法的表达式是 Aa+=a-=(b=4)*(a=3)Bx%(-3)Ca=a*3=2 Dy=float(i),17设已定义int k=7,x=12;,则能使值为3的表达式是:Ax%=(k%=5)Bx%=(k-k%5)Cx%=k-k%5 D(x%=k)-(k%=5),18.以下程序main()int a=12,b=12;printf(%d%dn,-a,+b);的输出结果是:A10 10 B12 12 C11 10 D11 13,19有如下程序main()int y=3,x=3,z=1;printf(%d%dn,(+x,a,y+),z+2);的输出结果是:A)34 B)42
35、C)43 D)33,20设x和y均为int型变量,且x=10和y=3,则以下语句 printf(%d,%dn,x+,-y);的输出结果是:A10,3 B9,3 C9,2 D10,221下列可作为C语言赋值语句的是A)x=3,y=5 B)a=b=6C)i-;D)y=int(x);,22以下程序main()int a=3;printf(%dn,(a+=a-=a*a));的输出结果是:A-6 B12 C0 D-12,23.设x和y均为int型变量,语句组:x+=y;y=x-y;x-=y;的功能是A)把x和y按从大到 小排列B)把x和y按从小到大排列C)无确定结果 D)交换x和y中的值.24.表示关系
36、x=y=z的c语言表达式为A)(X=Y)&(Y=Z)B)(X=Y)AND(Y=Z)C)(X=Y=Z)D)(X=Y)&(Y=Z),25.设a、b、C、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=ab)输出结果是A)2,1 B)3,2 C)4,3 D)2,-1,27.以下程序的输出结果是 main()int a=-1,b=4,k;k=(+a0)A)1 0 4 B)1 0 3 C)0 0 3 D)0 0 4 28.如果int A=1,B=2,C=3,D=4;则条件表达式AB?A:CD?C:D 的值是_。A)4 B)3 C)2 D)1,29.设有如下
37、定义:int x=l,y=-1;,则语句:printf(“%Dn”,(x-&+y);的输出结果是 A)1 B)0 C)-1 D)2 30.设int i=2,j=1,k=3,则表达式i&(i+j)&k|i+j的值是_ A)0 B)2 C)1 D)3,填空题,1.设有说明:char w;int x;floar y;double z;则表达式w*x+z-y 值的数据类型为 _2.设有int x=11;则表达式(x+*1/3)的值为_3.下列程序的输出结果是_main()double d=3.2;int x,y;x=1.2;y=(x+3.8)/5.0;printf(%f n,d*y);,4.设已定义int x=1,y=1,则表达式(!x|y-)的值是_5.下列程序的输出结果是16.00,请填空。main()int A=9,B=2;float x=_,y=1.1,z;z=A/2+B*x/y+1/2;printf(%5.2fn,z);,重点回顾,1C的数据类型(基本类型,构造类型,指针类型,空类型)及其定义方法。2C运算符的种类、运算优先级和结合性。3不同类型数据间的转换与运算。4C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。5表达式语句,空语句,复合语句。,