C语言数据类型-PPT.ppt
第二章 数据类型运算符 和 表达式第二章 数据类型、运算符和表达式 内容提要 数据类型常量与变量运算符与表达式2.1 数据类型数据类型总表双精度型双精度型 doubledouble单精度型单精度型 floatfloat短整型短整型 shortshortCC数数据据类类型型基本类型基本类型指针类型指针类型空类型空类型 voidvoid字符类型字符类型 charchar整整 型型实型实型聚合类型聚合类型枚举类型枚举类型 enumenum数组数组结构体结构体 structstruct共用体共用体 unionunion长整型长整型 longlong整型整型 intint数据类型决定:数据类型决定:1.1.数据占内存字节数数据占内存字节数2.2.数据取值范围数据取值范围3.3.其上可进行的操作其上可进行的操作类型 类型 符号 符号 关键字 关键字 数的表示范围 数的表示范围所占位数 所占位数整型字符型实型有无(signed)(signed)int int16-3276832767(signed)(signed)short short 16 16-3276832767-3276832767(signed)long32-2147483648214748364716 16unsigned unsigned int int065535 06553532 3204294967295 04294967295unsigned unsigned long longunsigned unsigned short short16 16065535 065535有 float float 323.4e-383.4e38有 有 double double 64 641.7e-3081.7e308 1.7e-3081.7e308有 有 char char 8 8-128127-128127无 无unsigned char unsigned char 8 80255 0255说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例。基本数据类型基本数据类型2.1 数据类型2.2 常量与变量 数据是程序的处理对象 C语言将数据分为常量与变量2.2.1 2.2.1 常量常量1.1.常量的定义及分类常量的定义及分类定义:程序运行的过程中,其值不能改变定义:程序运行的过程中,其值不能改变 的量。的量。分类分类:整型常量整型常量 实型常量实型常量 字符常量字符常量 字符串常量字符串常量 符号常量符号常量2.2 常量与变量2.2.整型常量(既整常数)整型常量(既整常数)三种形式:三种形式:十进制整数:由数字十进制整数:由数字0909和正负号表示和正负号表示.如如 123,-456,0123,-456,0八进制整数:由数字八进制整数:由数字00开头开头,后跟数字后跟数字0707表表示示.如如0123,0110123,011十六进制整数:由十六进制整数:由0 x0 x开头开头,后跟后跟09,af,AF09,af,AF表示表示.如如0 x123,0Xff0 x123,0Xff 转换成十进制数的方法:0123=1x82+2x81+3x80=(83)100 x123=1x162+2x161+3x160=(291)100Xff=15x161+15x160=(255)102.2 常量与变量整型常量的说明(1)(1)空白字符不可以出现在整数数字之间(2)(2)根据其值所在范围确定其数据类型(3)3)在整常量后加字母l或L,认为它是 long int 型常量例如 30000 为int型 65536 为long int 型 79L、012L 为long int 型2.2 常量与变量 3.3.实型常量实型常量实常数或浮点数,是一个实常数或浮点数,是一个十进制表示的符号实数十进制表示的符号实数表示形式:表示形式:十进制小数形式十进制小数形式 digits.digitsdigits.digits 如如0.123,.123,123.0,0.123,.123,123.0,0.0,123.0.0,123.指数形式(包括整数部分、尾数部分和指数部指数形式(包括整数部分、尾数部分和指数部分分)digits.digits digits.digits E|eE|e+|-digits+|-digits 小数点之前是整数部分,小数点之后是尾数部小数点之前是整数部分,小数点之后是尾数部分,小数点在没有尾数时可省略。分,小数点在没有尾数时可省略。如如12.312.3e3,123E2e3,123E22.2 常量与变量 实型常量的说明(1)实型常量采用十进制小数形式表示时,必须有 小数点。例如:123.是实型常量,而123是整型 常量(2)采用指数形式表示时,在E或e之前必须要有数 字,且之后的指数必须为整数。例如:E6、.e6、e 等都是不合法的(3)实型常量的整数部分为0时可以省略,如下形式 是允许的:.57,.0075e2,-.125,-.175E-2(4)所有的实型常量均被看作是双精度类型(double)2.2 常量与变量4.4.字符常量字符常量定义定义:用单引号括起来的单个普通字符或用单引号括起来的单个普通字符或转义字符转义字符。分为一般字符常量和特殊字符常量分为一般字符常量和特殊字符常量一般字符常量:一般字符常量:如如aa、99、!等。单引号只起定等。单引号只起定界作用并不表示字符本身,中间的字符可以界作用并不表示字符本身,中间的字符可以是除单引号(是除单引号()和反斜杠()和反斜杠()以外的数)以外的数字、字母等字、字母等CC语言字符集中包含的所有可显语言字符集中包含的所有可显示字符。示字符。特殊字符常量(也叫转义字符)特殊字符常量(也叫转义字符)是是CC语言中表示字符的一种特殊形式,其含语言中表示字符的一种特殊形式,其含义为将反斜杠(义为将反斜杠()后面的字符转换成另外)后面的字符转换成另外的意义。的意义。2.2 常量与变量字符常量的值:该字符的ASCII码值如 如 A A 65 65,a a 97 97,0 0 48,n 48,n 10 10 转义字符及其含义:转义字符 转义字符 含义 含义n nv vr ra a ddd dddt tb bf f“xhh xhh转义字符 转义字符 含义 含义换行 换行垂直制表 垂直制表回车 回车响铃 响铃单引号 单引号3 3位 位8 8进制数代表的字符 进制数代表的字符水平制表 水平制表退格 退格换页 换页反斜线 反斜线双引号 双引号2 2位 位16 16进制数代表的字符 进制数代表的字符2.2 常量与变量aaa 13如 101-A 012-n 376-x61-a 060-0 例 转义字符举例 int main()printf(101 x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);运行结果:(屏幕显示)A B CIsay:”How are you?”C ProgramTurbo C2.2 常量与变量 字符常量与字符串常量不同5.5.字符串常量字符串常量l l定义:用双引号定义:用双引号(“”“”)括起来的字符序列括起来的字符序列l l存储:存储:每个字符串尾每个字符串尾自动自动加一个加一个 00 作为作为字符串结束标志字符串结束标志h e l l o 0例 字符串“hello”在内存中a a 0例 a“a”例 空串“”0例:char ch;ch=“A”;例:char ch;ch=A;2.2 常量与变量6.6.符号常量符号常量(1)(1)标识符标识符定义:用来标识变量、常量、函数等的字符序定义:用来标识变量、常量、函数等的字符序列列组成:组成:只能由只能由字母字母、数字数字、下划线下划线组成,且第一组成,且第一个字母必须是字母或下划线个字母必须是字母或下划线大小写敏感大小写敏感不能使用关键字不能使用关键字长度:最长长度:最长3322个字符个字符命名原则:命名原则:见名知义见名知义不宜混淆不宜混淆 如如11与与l,ol,o与与00例:判断下列标识符号合法性sum Sum M.D.John day Date 3days student_name#33 lotus_1_2_3 char ab _above$123M.D.John3days#33char$123 ab2.2 常量与变量 在在CC语言中,允许将程序中的常量定义为一语言中,允许将程序中的常量定义为一个标识符,称为符号常量。在使用符号常量前个标识符,称为符号常量。在使用符号常量前必须先加以定义,一般情况下,符号常量使用必须先加以定义,一般情况下,符号常量使用大写英文字母表示。大写英文字母表示。其定义的一般形式为:#define 例如:#define PRICE 352.2 常量与变量2.2.2 变量概念:其值可以改变的量变量名与变量值变量定义的一般格式:数据类型 变量1,变量2,变量n;变量初始化:定义时赋初值变量的使用:先定义,后使用变量值3a变量名存储单元决定分配字节数和数的表示范围合法标识符例:int a,b,c;float data;例:int a=2,b,c=4;float data=3.67;char ch=A;int x=1,y=1,z=1;int x=y=z=1;main()int a,b=2;float data;a=1;data=(a+b)*1.2;printf(“data=%fn”,data);变量定义main()int a,b=2;a=1;float data;data=(a+b)*1.2;printf(“data=%fn”,data);2.2 常量与变量编译程序根据变量定义为其分配指定字节的内存单元.地址int a=1,b=-3,c;abc2字节2字节2字节地址地址.内存1-3随机数变量定义位置:一般放在函数开头2.2 常量与变量 与常量类似,变量也有不同的类型,一般可以分为以下三种类型:整型变量 实型变量 字符变量2.2 常量与变量1.1.整型变量整型变量(1 1)整型变量的分类整型变量的分类 基本型基本型 短整型短整型 长整型长整型 无符号整型无符号整型基本型:类型说明符为int,在内存中占2个字节。短整型:类型说明符为short int或short,所占字节和取值范围均与基本型相同。长整型:类型说明符为long int或long,在内存中占4个字节。无符号整型:类型说明符为unsigned。.无符号基本型:类型说明符为 unsigned int或 unsigned。.无符号短整型:类型说明符为unsigned short。.无符号长整型:类型说明符为unsigned long。2.2 常量与变量例2-1 整型变量的使用#include int main()int x,y,z;x=10;y=20;z=x+y;printf(“x+y=%dn”,z);return 0;输出结果:x+y=30(22)整型变量的定义与使用)整型变量的定义与使用2.2 常量与变量int x;x=10;则变量x的值10在内存中的存放形式:int x;x=-10;则变量x的值10在内存中的存放形式:(33)整型数据在内存中的存放形式)整型数据在内存中的存放形式2.2 常量与变量例2-2 整型数据的溢出问题#include int main()int x,y;x=32767;y=x+1;printf(%d,%dn,x,y);return 0;运行结果:-32768原因:一个int型变量只能容纳-32768到32767范 围内的数,无法表示超过这个范围的数。(44)整型数据的溢出)整型数据的溢出2.2 常量与变量2.2.实型变量实型变量(1)(1)实型变量的分类实型变量的分类单精度实型:类型说明符为单精度实型:类型说明符为floatfloat,在内存中,在内存中占占44个字节,提供个字节,提供77位有效数字。位有效数字。双精度实型:类型说明符为双精度实型:类型说明符为doubledouble,在内存,在内存中占中占88个字节,提供个字节,提供1 5 1 61 5 1 6位有效数字。位有效数字。例 float a;a=111111.111;/*a=111111.1*/double b;b=111111.111;/*b=111111.111*/2.2 常量与变量 例2-3实型变量的使用#includeint main()float x,y,z;x=10;y=20;z=x+y;printf(“x+y=%fn”,z);return 0;运行结果:x+y=30.000000(22)实型变量的定义与使用)实型变量的定义与使用2.2 常量与变量例 例 a=D;/*a=68;*/a=D;/*a=68;*/x=A+5;/*x=65+5;*/x=A+5;/*x=65+5;*/s=!+G/*s=33+71;*/s=!+G/*s=33+71;*/l l字符变量存放字符字符变量存放字符ASCIIASCII码码l lcharchar与与intint数据间可进行算术运算数据间可进行算术运算没有字符串变量,用字符数组存放(33)字符变量)字符变量2.2 常量与变量#include#include int int main()main()char c1,c2;/*char c1,c2;/*定义 定义c1 c1,c2 c2为字符型变量 为字符型变量*/c1=97;c2=98;/*c1=97;c2=98;/*将整数 将整数97 97和 和98 98分别赋给 分别赋给c1 c1和 和c2 c2*/*/printf(”%c,%cn printf(”%c,%cn”,c1,c2);/*”,c1,c2);/*以字符形式输出 以字符形式输出c1 c1和 和c2*/c2*/printf(”%d,%d printf(”%d,%d”,c1,c2);/*”,c1,c2);/*输出 输出c1 c1和 和c2 c2的 的ASCII ASCII码值 码值*/printf(”%d printf(”%d”,c1+c2);”,c1+c2);return 0;return 0;运行结果如下:运行结果如下:a,b a,b97,98 97,98 2.2 常量与变量例#define PRICE 12.5 main()int num=3;float total;char ch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1=%cn”,total,ch1);宏定义变量定义输出结果运行结果:total=37.500000,ch1=d(44)变量的初始化)变量的初始化2.2 常量与变量C运算符算术运算符:(算术运算符:(+-*/%+-+-*/%+-)关系运算符:(关系运算符:(=!=!=)逻辑运算符:(!逻辑运算符:(!&|&|)位运算符 位运算符:(:(|&|&)赋值运算符:(赋值运算符:(=及其扩展)及其扩展)条件运算符:(条件运算符:(?:?:)逗号运算符:(逗号运算符:(,)指针运算符:(指针运算符:(*&)求字节数 求字节数:(:(sizeof sizeof)强制类型转换:(类型)强制类型转换:(类型)分量运算符:(分量运算符:(.-.-)下标运算符:(下标运算符:()其它 其它:(:(()-()-)运算符的分类 2.3 运算符与表达式定义:由常量、变量、函数、运算符和括号组合起来的、符合C语法规则的式子称为表达式。一个表达式有一个值以及其对应的类型表达式求值首先进行优先级高的运算再进行优先级低的运算,然后对于优先级相同的运算按结合方向进行运算。结合方向:左结合、右结合例如:x-y+z(x-y)+z x=y=z x=(y=z)2.3 运算符与表达式2.3.1算术运算符及算术表达式1.1.基本算术运算符:基本算术运算符:+-*/%+-*/%结合方向:从左向右结合方向:从左向右优先级:(高)优先级:(高)-*/%-+-*/%-+-说明:说明:“-”可为可为单目单目运算符时运算符时,右结合性右结合性两整数相除,结果为整数,如果两整数两整数相除,结果为整数,如果两整数中有一个是负数,舍入规则为中有一个是负数,舍入规则为“向零取向零取整整”如果运算的两个数中有一个是实型,则如果运算的两个数中有一个是实型,则结果为结果为doubledouble型型%要求两侧均为整型数据要求两侧均为整型数据例5/2=2-5/2.0=-2.55%2=1-5%2=-11%10=15%1=05.5%2()2.3 运算符与表达式#include#include intint main()main()printf(”10-9/6*5=printf(”10-9/6*5=%d”,10 9/6*5);%d”,10 9/6*5);return 0;return 0;运行结果如下:运行结果如下:10-9/6*5=510-9/6*5=5#include#includemain()main()int x=5,y;int x=5,y;y=+x;y=+x;printf(%dn,y);printf(%dn,y);输出结果输出结果:66例2-5 计算表达式10-9/6*5 2.3 运算符与表达式例2-6 计算表达式10-3.0/2的值#include int main()printf(”10-3.0/2=%f”,10-3.0/2);运行结果如下:10-3.0/2=8.500000 2.3 运算符与表达式2.算术表达式 定义:用算术运算符和括号将运算对象连接起来的、符合C语法规则的式子称为算术表达式。其中的运算对象包括常量、变量、函数等。例如:x+y、(x*2)/y、sin(x)sin(y)等都是算术表达式。double floatlongunsignedint char,short高高低 2.3 运算符与表达式(1)(x+y)h2(2)s(s-a)(s-b)(s-c)(3)(x+1)2+(y-1)2在C语言中,其合法的算术表达式如下:(1)(x+y)*h/2.0(2)s*(s-a)*(s-b)*(s-c)(3)(x+1)*(x+1)+(y-1)*(y-1)例例2-7 2-7 写出下列数学表达式对应的合法的写出下列数学表达式对应的合法的CC算术算术 表达式表达式 2.3 运算符与表达式种类:l=!=l 结合方向:自左向右 l 优先级别:l 关系运算符优先级低于算术运算符优先级6(高)优先级7(低)=!=2.3.2 2.3.2 关系运算符及关系表达式关系运算符及关系表达式1.1.关系运算符关系运算符例:例:c ca+b a+b 等价于 等价于 c(c(a+b a+b)ab!=c(ab)!=c ab!=c(ab)!=c a=bc a=(bc)a=bc a=(bc a=(a=bc a=(bc)bc)2.3 运算符与表达式关系运算结果:1(真)和 0(假)例2-8 计算下列关系表达式的值(1)1010(2)10=10(3)1010!=10(4)3*8-9!=5+7%3 2.3 运算符与表达式2.关系表达式 关系表达式的值:是逻辑值“真(True)”或“假(False)”,用1或0表示 关系表达式例子 int a=3,b=2,c=1,d,f;ab(ab)=c b+cb f=abc/表达式值1/表达式值1/表达式值0/d=1/f=0例 若a=0;b=0.5;x=0.3;则 a=x0 结果为 A100 结果为10 2.3 运算符与表达式种类:!&|逻辑运算真值表优先级!(高 2)&(11)|(低 12)ab!a!b a&b a|b真假真假假 假真真真假假假假假真真假假真真真假真真2.3.3逻辑运算符及逻辑表达式 1.逻辑运算符 2.3 运算符与表达式例 a=x&xb&xy a=b|x=y!a|ab/(a=x)&(xb)&(xy)/(a=b)|(x=y)/(!a)|(ab)例2-9 假设x=10,y=20,分析下列逻辑表达式。(1)!x(2)x&y(3)!x|y(4)!x+5|10%y=x-10y【例2-10】写出满足要求的合法的C逻辑 表达式。(1)x表达0到9的字符(2)x 和y都大于0(3)x是偶数并且x100 2.3 运算符与表达式位运算是指进行二进制位的运算例如:将一个存储单元中的各二进制位左移、右移,两个数按位相加等。说明(1)位运算符中除-以外,均为二目(元)运算符,即要求两侧各有一个运算量。(2)运算量只能是整型或字符型的数据,不能为实型数据。附:位运算符附:位运算符 运算符 含义 运算符 含义 按位与 取反 按位或 右移 2.3 运算符与表达式 位运算中的“&”、“|”和“-”的真值表与逻辑运算等价,唯一不同的是位运算是逐位进行运算的。(异或位运算符)的真值表:a b ab0 0 01 0 11 1 00 1 1 2.3 运算符与表达式 定义:用逻辑运算符 短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。例 a&b&c/只在a为真时,才判别b的值;只在a、b都为真时,才判别 c的值例 a|b|c/只在a为假时,才判别b的值;只在a、b都为假时,才判别 c的值例 a=1;b=2;c=3;d=4;m=1;n=1;(m=ab)&(n=cd)/结果 m=0,n=12.逻辑表达式 2.3 运算符与表达式 1.赋值运算符 赋值符号“”就是赋值运算符,它的作用是将一个数据赋给一个变量。例2-11 假设变量x为整型,计算下列赋值表达式的值。(1)x=y=10(2)x=10+(y=20)(3)x=10+(y=20)/(z=30)2.3.4 赋值运算符及赋值表达式 2.3 运算符与表达式如果赋值运算符两侧的数据类型不一致,但都是数值型或字符型时,系统要进行类型转换。将浮点型数据(包括单、双精度)赋给整型变量时,舍弃浮点数的小数部分。如:为整型变量,执行“i=3.56;”的结果是使的值为,以整数形式存储在整型变量中。将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中,即用0补足有效数字位。如:i为float型变量,执行“i=3;”的结果i=3.000000,以单精度浮点数形式存储到i中。赋值运算符类型转换 2.3 运算符与表达式将一个double型数据赋给float变量时,截取其前面7位有效数字,存放到float变量的存储单元(4个字节)中。但应注意数值范围不能溢出。如果将一个float型数据赋给double变量时,数值不变,有效位数扩展到16位,在内存中以8个字节存储。2.3 运算符与表达式字符型数据赋给整型变量时,由于字符只占1个字节,而整型变量为个字节,因此将字符数据(个二进位)放到整型变量存储单元的低位中。第一种情况:如果字符型为无符号的字符型,则将字符的位放到整型变量低位,高位补零。第二种情况:如果字符型为带符号的,则将字符的位放到整型变量低位,高位补符号位,即(符号扩展)。若字符最高位为0,则整型变量高8位补0;若字符最高位为1,则高8位全补1。2.3 运算符与表达式将一个int、short、long型数据赋给一char型变量,只将其低8位原封不动地送到char型变量(即截断)。将带符号的整型数据(int型)赋给long型变量时,要进行符号扩展,将整型数的16位送到long型低16位中;反之,若将一个long型数据赋给一个int型变量,只将long型数据中低16位原封不动地送到整型变量(即截断)。2.3 运算符与表达式将unsigned int型数据赋给long int型变量时,不存在符号扩展问题,只需将高位补即可。将unsigned int型数据赋给int型变量时,将数据原封不动的送到整型变量中,但如果数据范围超过相应整型的范围,会出现错误。将非unsigned型数据赋给长度相同的unsigned型变量,也是原样照赋(连原有的符号位也作为数值一起传送)。2.3 运算符与表达式定义:由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。例如:x10、xy10。说明:赋值运算符左侧必须是变量,不能是 常量或表达式。赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型。例例 float f;float f;int i;int i;i=10;i=10;f=i;f=i;则则 f=10.0f=10.0错误错误:3=x-2*y;3=x-2*y;a+b=3;a+b=3;2.赋值表达式 2.3 运算符与表达式 赋值表达式的值与变量值相等,且可嵌套。例:a=12;a+=a-=a*a/a=-264 等价于a=a+(a=a-(a*a)a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)/表达式值为5,a,b,c值为5/表达式值为5,b=5;a=5/表达式值11,c=6,a=11/表达式值10,a=10,b=4,c=6/表达式值5,a=5,b=10,c=2 2.3 运算符与表达式复合的赋值运算符 在“=”前面加上其他运算符 种类+=-=*=/=%=&=|=一般形式:变量 双目运算符=表达式它等效于:变量=变量 运算符 表达式a+=3a=a+3x*=y+8 x=x*(y+8)x%=3 x=x%3例2-12 假设变量x=10,y=20,计算下列复合的赋值表达式的值。(1)x+=10(2)x*=y+20(3)x+=x-=x/10 2.3 运算符与表达式自增、自减运算符+-作用:使变量值加1或减1优先级:+/-高于-(单目减)种类:前置+i,-i(先执行i+1或i-1,再使用i值)后置 i+,i-(先使用i值,再执行i+1或i-1)int x,y;x=10;y=+x;此时,变量y的值为11。如果程序改为:x=10;y=x+;则变量y的值为10。2.3.5 增量运算符 2.3 运算符与表达式 一般形式:expr1?expr2:expr3 由常量、变量、函数、运算符和括号组合起来的、符合C语法规则的式子称为表达式。执行过程 expr1取expr2值 取expr3值非0=0例 if(ab)printf(“%d”,a);else printf(“%d”,b);printf(“%d”,ab?a:b);2.3.6 条件运算符及条件表达式 2.3 运算符与表达式 结合方向:自右向左例2-13 假设变量 x=10,y=20,z=30,计算下列条件表达式的值。(1)x 10?100:200(2)x 10?x+z:y 20?y+z:z 2.3 运算符与表达式 一般形式:表达式1,表达式2,表达式n结合性:从左向右优先级:15逗号表达式的值:等于表达式n的值例如:1.x=(y=1,y+1);2.y=20;x=(y=y-10,10/y);2.3.7 逗号运算符及逗号表达式 2.3 运算符与表达式例1 a=3*5,a*4a=3*5,a*4,a+5例2 x=(a=3,6*3)x=a=3,6*a例3 a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);例2-14 计算下列逗号表达式的值。(1)x=10,x+10(2)(x=1+2,x+3),x+4 2.3 运算符与表达式 求字节数运算符“sizeof”是C语言提供的一种特殊的运算符,是单目运算符。求字节数运算符与操作数结合在一起构成的式子称为求字节数表达式。一般形式sizeof(表达式)或sizeof(数据类型名)例sizeof(int)sizeof(/a)sizeof x2.3.8 求字节数运算符及求字节数表达式 2.3 运算符与表达式一般形式:(类型说明符)(表达式)功能:把表达式的运算结果强制转换成类型说明符所表示的类型。例如:(float)a(int)(x+y)说明:(int)x 若原来x的类型为float型,转换后得到一个中间变量,它的值等于x的整数部分,而变量x的值不变。2.3.9 强制类型转换运算符及表达式 2.3 运算符与表达式C 语言运算符的优先级与结合性C 语言运算符的优先级 由各种不同类型的表达式根据C语法规则复合在一起构成的更加复杂的表达式称为复合表达式。如:x(y=20)*(z=2)其结果 x40附:复合表达式