《数据类型及表达式 (2).ppt》由会员分享,可在线阅读,更多相关《数据类型及表达式 (2).ppt(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2.1C2.1C语言的数据类型语言的数据类型语言的数据类型语言的数据类型单单精精度度实实型型 (float)(float)双双 精精 度度 实实 型型 (double)(double)整型整型 (int)int)字符型字符型 (char)(char)枚举类型枚举类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型实型实型基本类型基本类型构造类型构造类型空类型空类型 (void)指针类型指针类型数据类型数据类型2.1C2.1C语言的数据类型语言的数据类型语言的数据类型语言的数据类型2.1.1 2.1.1 基本数据类型基本数据类型2.1.2 2.1.2 常量常量2.1.3 2.1.3 变量
2、及其类型定义变量及其类型定义2.1.12.1.1基本数据类型基本数据类型基本数据类型基本数据类型整型数据实型数据字符型数据基本数据类型基本数据类型2.1.12.1.1基本数据类型基本数据类型基本数据类型基本数据类型 长整型 (long int)整型数据整型数据一般整型 (int)短整型(short int)带符号(signed)无符号(unsigned)带符号(signed)无符号(unsigned)带符号(signed)无符号(unsigned)整型数据的特性见下表:整型数据的特性见下表:数据类型名数据类型名说明说明VisualC+6.0环境环境TurboC2.0环境环境字节字节取值范围取值
3、范围字节字节取值范围取值范围short int短整型短整型2-32768327672-3276832767signed short int带符号短整型带符号短整型2-32768327672-3276832767unsigned short int无符号短整型无符号短整型20655352065535int整型整型4-214748364821474836472-3276832767signed int带符号整型带符号整型4-214748364821474836472-3276832767unsigned int无符号整型无符号整型4042949672952065535long int长整型长整型4
4、-214748364821474836474-21474836482147483647signed long int带符号长整型带符号长整型4-214748364821474836474-21474836482147483647unsigned long int无符号长整型无符号长整型4042949672954042949672952.1.12.1.1基本数据类型基本数据类型基本数据类型基本数据类型长双精度实型(long double)实型数据实型数据单精度实型(float)双精度实型(double)数据类型名说明VisualC+6.0环境TurboC2.0环境字节取值范围有效数字字节取值范围
5、有效数字float单精度实型4-3.410383.41038674-3.410383.4103867double双精度实型8-1.7103081.71030815168-1.7103081.7103081516long double 长双精度实型16-1.21049321.2104932181910-1.21049321.21049321819实型数据的特性见下表实型数据的特性见下表2.1.12.1.1基本数据类型基本数据类型基本数据类型基本数据类型 数据类型名说明字节取值范围char字符型1-128127signed char带符号字符型1-128127unsigned char无符号字符型
6、10255字符型数据字符型数据一般字符型(char)带符号字符型(signed char)无符号字符型(unsigned char)字符型数据的特性见下表字符型数据的特性见下表2.1.22.1.2常量常量常量常量 整型常量 实型常量字符型常量字符串常量 常量常量整型常量整型常量(三种表现形式三种表现形式):十进制形式十进制形式:与数学上的整数表示相同与数学上的整数表示相同。例如例如:1212,-100,0,-100,0八进制形式八进制形式:在数码前加数字在数码前加数字0 0。例如例如:0 01212十六进制形式十六进制形式:在数码前加在数码前加0X0X(数字数字0 0和字母和字母X X,大小写
7、均可)。大小写均可)。例如例如:0 x0 x1212=1*81+2*80=10=1*161+2*160=182.1.22.1.2常量常量常量常量(一)(一)(一)(一)注意事项:注意事项:八进制的数码范围为八进制的数码范围为0-70-7;则:则:01018 8、0 09 91 1、0 0A A2 2 十六进制的数码除了数字十六进制的数码除了数字0-90-9外外,还使用英文字母还使用英文字母a-f(a-f(或或A-F)A-F)表示表示10-1510-15。如:如:0 x1e0 x1e、0Xabcdef0Xabcdef、0 x10000 x1000 但:但:0X2df0X2dfg g、0 x100
8、0 x100L L错误错误都是错误的。都是错误的。实型常量实型常量(二种表现形式二种表现形式)十进制形式十进制形式:由数字和小数点组成;由数字和小数点组成;指数形式:指数形式:由由“十进制小数十进制小数”+“e(”+“e(或或E)”+“E)”+“十进制数整数十进制数整数”三部分组成。三部分组成。例如例如例如例如:3.4 3.4 3.4 3.4 4.4.4.4.3.3.3.3 例如例如:12.5e-6 12.5e-6 表示表示12.51012.510-6-6十进制小数十进制小数e(e(或或E)E)十进制数整数十进制数整数2.1.22.1.2常量(二)常量(二)常量(二)常量(二)注意事项:注意事
9、项:小数点不能单独出现;小数点不能单独出现;e e或或E E的两边必须有数,且其后面必须为整数;的两边必须有数,且其后面必须为整数;如:如:0.=.0 =0=0.0 .0.=.0 =0=0.0 .如:如:6E0.2 6E0.2 e5 e5 6E 6E(错误)错误)(错误)(错误)2.1.22.1.2常量(二)常量(二)常量(二)常量(二)字符型常量字符型常量(二种表现形式):(二种表现形式):用单引号括起来的一个字符;用单引号括起来的一个字符;用单引号括起来的由反斜杠用单引号括起来的由反斜杠()()引导的转引导的转义字符。义字符。如:如:AA、1 1、?等。等。如:如:n 101 n 101
10、x41x41在统计字在统计字符个数时,符个数时,只能记为只能记为一个字符一个字符一个字符的一个字符的多种多种表示方法:表示方法:字符字符A A可以表示为可以表示为AA、x41x41、1011012.1.22.1.2常量(三)常量(三)常量(三)常量(三)转义字符表转义字符表字符形式字符形式功能功能 n n换行换行t t、VV横向跳格、横向跳格、b b、rr竖向跳格竖向跳格退格、退格、ff回车回车、8 8进制数表示的进制数表示的ASCIIASCII码对应的字符码对应的字符反斜杠、单引号、双引号反斜杠、单引号、双引号dddddd换页换页 xhh xhh1616进制数表示的进制数表示的ASCIIAS
11、CII码对应的字符码对应的字符字符串常量字符串常量1.1.字符串常量:用一对双引号括起来的字符序列字符串常量:用一对双引号括起来的字符序列2.2.3.3.2.2.字符串结束标记字符串结束标记00。4.4.每一个字符串常量结尾都有一个字符每一个字符串常量结尾都有一个字符00(一般(一般情况是由系统自动加上)。情况是由系统自动加上)。5.5.6.6.如:如:CHINACHINA在内存中为:在内存中为:7.7.a a为两个字符为两个字符 8.8.a a为一个字符为一个字符 C H IN A 0aa 0如:如:Hello,1999,a2.1.22.1.2常量(四)常量(四)常量(四)常量(四)2.1.
12、32.1.3变量及类型定义变量及类型定义变量及类型定义变量及类型定义 1.1.变量定义变量定义变量变量:在程序执行过程中其值可以被改变的量。在程序执行过程中其值可以被改变的量。变量三要素变量名变量数据类型变量的值。变量定义的实质是按照变量说明的数据类型为变量分配相应空间的存储单元,在该存储单元中存放变量的值。数据类型数据类型例如例如:inti;charc1;floatx;doubley1,y2;变量定义一般格式变量定义一般格式:变量名表;变量名表;内存内存 00050005000600060002000200030003000400040001000100000000地址地址c1xi i变量名
13、是一个符号地址,可以用运算符变量名是一个符号地址,可以用运算符&取得存储单元取得存储单元的地址。的地址。C C语言对变量的要求:语言对变量的要求:“先定义、后使用先定义、后使用”数据类型:数据类型:C语言的合法数据类型。如语言的合法数据类型。如int、short、char、float、double等。等。变量定义说明:变量定义说明:在源程序中,变量用标识符表示在源程序中,变量用标识符表示(小写小写)。)。变量在内存中占据一定的存储单元。不同类型的变变量在内存中占据一定的存储单元。不同类型的变量,所占据的内存单元数不同。量,所占据的内存单元数不同。命名原则命名原则:见名思义见名思义 如如:sum
14、,area,rsum,area,r2.1.32.1.3变量及类型定义变量及类型定义变量及类型定义变量及类型定义 2.变量初始化及赋值变量赋初值变量赋初值在定义同时赋初值亦在定义同时赋初值亦称称初始化初始化 如:如:int a=3;int a=3;float f=3.56;float f=3.56;char c=a;char c=a;int x=1,y=1,z=1;int x=1,y=1,z=1;int x=y=z=1;(int x=y=z=1;(错误)错误)inta=3;相当于相当于inta;a=3;2.2.2 算术运算符及算术表达式 2.2.1 运算符和表达式 2.22.2运算符及表达式运算
15、符及表达式运算符及表达式运算符及表达式 2.2.3 关系运算符及关系表达式 2.2.4 逻辑运算符及逻辑表达式 2.2.5 条件运算符及条件表达式 2.2.6 赋值运算符及赋值表达式 2.2.7 逗号运算符及逗号表达式 2.2.8 求字节运算符2.2.9 类型转换 分类名称运算符算术运算符+、-、*、/、%、+、-关系运算符、=、=、!=逻辑运算符&、|、!位运算符、|、&赋值运算符=及其扩展赋值运算符条件运算符?:逗号运算符,指针运算符*、&求字节数运算符sizeof强制类型转换运算符(类型)分量运算符.、-下标运算符 其他函数运算符()2.2.12.2.1运算符和表达式运算符和表达式运算符
16、和表达式运算符和表达式 1.1.运算符运算符2.2.12.2.1运算符和表达式运算符和表达式运算符和表达式运算符和表达式 用用运运算算符符将将操操作作对对象象连连接接起起来来、符符合合C C语语法法规规则则的的式式子子称称为为表表达达式式。表达式因运算符种类也可分为各种表达式,如表达式因运算符种类也可分为各种表达式,如3+43+4,是算术表达式。,是算术表达式。x y x y 为关系表达式。为关系表达式。运运算算符符的的优优先先级级是是指指不不同同的的运运算算符符在在表表达达式式中中进进行行运运算算的的先先后后次次序序。如,算术运算符如,算术运算符*、/的优先级高于的优先级高于+、-的优先级。
17、如的优先级。如 2+4*5/2-8 2+4*5/2-8 当当一一个个运运算算对对象象的的两两侧侧的的运运算算符符的的优优先先级级相相同同时时,运运算算的的结结合合方方向向称称为为结结合合性性。运运算算符符的的结结合合性性分分为为左左结结合合和和右右结结合合两两种种。在在C C语语言言中中,运运算算对对象象先先与与左左面面的的运运算算符符结结合合称称左左结结合合,如如+、-、*、/的的结结合合方方向向为为自自左左向向右右;运运算算对对象象先先与与右右面面的的运运算算符符结结合合称称右右结结合合,如如单单目目运运算算符符+、-的结合方向是自右向左。的结合方向是自右向左。如如 2 2+3 3 5 5
18、。5.5.据运算符的运算对象的个数,据运算符的运算对象的个数,C C语言的运算符分为语言的运算符分为 单目运算符、双目运算符和三目运算符单目运算符、双目运算符和三目运算符2.2.表达式表达式3.3.运算符的优先级运算符的优先级4.4.运算符的结合性运算符的结合性+加法运算符或正值运算符2+3、+6-减法运算符,或负值运算符3-4、-6*乘法运算符3*4、a*b/除法运算符3/4、(a+b)/(a-b)2.2.22.2.2算术运算符及算术表达式算术运算符及算术表达式算术运算符及算术表达式算术运算符及算术表达式 1.1.基本的算术运算符基本的算术运算符注意:注意:两个整数相除,其值为整数。两个整数
19、相除,其值为整数。5/3值为值为1除数、被除数有一个为负值时,结果除数、被除数有一个为负值时,结果”向零取整向零取整”-5/3值为值为-1除数、被除数有一个为实数时,结果为除数、被除数有一个为实数时,结果为double型型2.2.22.2.2算术运算符及算术表达式算术运算符及算术表达式算术运算符及算术表达式算术运算符及算术表达式%模运算符,或称求余运算符模运算符,或称求余运算符%两侧均为整型数据。如:两侧均为整型数据。如:7%4的值为的值为3-7%4,7%-4,-7%-4的值为多少?的值为多少?符号由被除数的值决定-3,3,-32.2.算术表达式和运算符的优先级与结合性算术表达式和运算符的优先
20、级与结合性1 1)用算术运算符和括号将运算对象连接起来的符合)用算术运算符和括号将运算对象连接起来的符合C C语言语言语法规则的式子,称为算术表达式语法规则的式子,称为算术表达式 (运算对象包括常运算对象包括常量、变量、函数等量、变量、函数等)如:如:3.14*r*r/x3.14*r*r/x2)2)运算符的优先级和结合性运算符的优先级和结合性 优先级:优先级:先先*、/、%后后+、-结合性:结合性:左结合性左结合性。即表达式从左向右进行计算。即表达式从左向右进行计算3+4*5-6/2+8%4=?()202.2.22.2.2算术运算符及算术表达式算术运算符及算术表达式算术运算符及算术表达式算术运
21、算符及算术表达式 3、自增、自减运算符、自增、自减运算符+i,-i在使用在使用i之前之前,先使先使i的值加的值加1或减或减1i+,i-在使用在使用i之后,使之后,使i的值加的值加1或减或减1注意:注意:(1)自增、自减运算符只能用于变量,而不能用于)自增、自减运算符只能用于变量,而不能用于常量和表达式。如:常量和表达式。如:5+、-(a+b)不合法不合法(2)+和和-的优先级别高于算术运算符,结合方的优先级别高于算术运算符,结合方向是向是“自右向左自右向左”如:如:-i+相当于相当于-(i+)2.2.22.2.2算术运算符及算术表达式算术运算符及算术表达式算术运算符及算术表达式算术运算符及算术
22、表达式 例例 自增自减运算自增自减运算#include“stdio.h”voidmain()inti=0,j;j=i+;printf(“%d,%dn”,i,j);i=0;j=+i;printf(“%d,%dn”,i,j);区分:区分:j=i+1;j=+i;1,01,1下述程序段的输出结果是_。intx=10;inty=x+;printf(%d,%d,x,y);A.11,10B.11,11C.10,10D.10,11练一练:小于小于优先级相同(高)优先级相同(高)大于大于=大于或等于大于或等于=(连续两个(连续两个=)等于等于优先级相同(低)优先级相同(低)!=不等于不等于C C语言有六种关系运
23、算符语言有六种关系运算符2.2.32.2.3关系运算符及关系表达式关系运算符及关系表达式关系运算符及关系表达式关系运算符及关系表达式 例:例:ab!=c等效于等效于(ab)!=ca=bc等效于等效于a=(bc等效于等效于a=(bc)2.2.32.2.3关系运算符及关系表达式关系运算符及关系表达式关系运算符及关系表达式关系运算符及关系表达式 关系表达式:用关系运算符连接的表达式。关系表达式:用关系运算符连接的表达式。真真假假1(任任意意非非0值值也作为真)也作为真)0例例:a=3,b=2,c=1,则:则:(ab)=c真,表达式的值为真,表达式的值为1d=abd的值等于的值等于1f=abcf的值等
24、于的值等于0 x=a+b2x=1 关系表达式的值:关系表达式的值:2.2.32.2.3关系运算符及关系表达式关系运算符及关系表达式关系运算符及关系表达式关系运算符及关系表达式&逻辑逻辑“与与”“双目运算符双目运算符”:要求两个操作数,:要求两个操作数,如:如:a&ba&b x|y x|y|逻辑逻辑“或或”!逻辑逻辑“非非”单目运算符,要求一个操作数单目运算符,要求一个操作数,如:如:!a!a优先次序为优先次序为:!(非):!(非)&(与与)|(或或)逻辑运算符及其运算次序:逻辑运算符及其运算次序:2.3.42.3.4逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式逻辑运算符及
25、逻辑表达式 逻辑运算的逻辑运算的“真值表真值表”(操作数的值为不同组合时,逻辑表达式的值操作数的值为不同组合时,逻辑表达式的值)a ab b!a!a!b!ba&ba&ba|ba|b真真真真假假假假真真真真真真假假假假真真假假真真假假真真真真假假假假真真假假假假真真真真假假假假在一个逻辑表达式中,包含多个逻辑运算符在一个逻辑表达式中,包含多个逻辑运算符例例 :(ab)&(xy)(ab)&(xy)可写为:abab&xyxy2.2.42.2.4逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式 C C语言语言真真假假逻辑表达式逻辑表达式1 10 0判断量的真假判
26、断量的真假非非0 0例:例:a=4a0&!a=0a=4,b=5a&b=1y=4&0|2if(a)printf(“thebiggeroneisb”);(真)(真)(假假)y=12.2.42.2.4逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式 练一练:练一练:1 1、已有定义:、已有定义:int x=3,y=4,z=5;int x=3,y=4,z=5;则表达式则表达式 !(x+y)+z-1&y+z/2 !(x+y)+z-1&y+z/2的值是(的值是():):A A)6 B6 B)0 C0 C)2 D2 D)1 1D C C语言中逻辑运算的不完全求解语言中
27、逻辑运算的不完全求解编译器在求解逻辑表达式的值时,采用编译器在求解逻辑表达式的值时,采用“非完非完全求解全求解”的方法,即:当的方法,即:当求得表达式为真后,求得表达式为真后,就结束求解就结束求解;只有在需要执行下一个逻辑运算;只有在需要执行下一个逻辑运算时,才继续运算。时,才继续运算。1、a&b&c只有只有a a为真时,才判别为真时,才判别b b的的值;只有值;只有a a和和b b均为真时,均为真时,才判别才判别c c的值。的值。只要只要a a为假,就不再判别为假,就不再判别b b和和c c的值,直接求得表达式的值,直接求得表达式的值为假。的值为假。0*5*182.2.42.2.4逻辑运算符
28、及逻辑表达式逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式 2、a|b|c只要只要a a为真,就不再判别为真,就不再判别b b和和c c的值,直接求得表达式的值,直接求得表达式的值为真。的值为真。只有只有a a为假时,才判别为假时,才判别b b的的值;只有值;只有a a和和b b均为假时,均为假时,才判别才判别c c的值。的值。2.2.42.2.4逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式 练一练:练一练:1 1、已有定义:、已有定义:int x=3,y=4,z=5;int x=3,y=4,z=5;则表达式则表达式 !(x=y)
29、&(z=9)&(y=7)!(x=y)&(z=9)&(y=7)的值是(的值是()A A)6 B6 B)0 C0 C)2 D2 D)1 1B 此时x=()y=()z=()454表达式表达式1 1?表达式表达式2 2:表达式表达式3 3(1)条件表达式的一般形式:条件表达式的一般形式:条件运算符的执行顺序条件运算符的执行顺序:先先求解表达式求解表达式1 1的值,的值,若若其为真,则求解表达式其为真,则求解表达式2 2的值,且整个条件的值,且整个条件表达式的值等于表达式表达式的值等于表达式2 2;若若表达式表达式1 1为假,则求解表达式为假,则求解表达式3 3的值,的值,且整且整个条件表达式的值等于表
30、达式个条件表达式的值等于表达式3 3。2.2.52.2.5条件运算符条件运算符条件运算符条件运算符(?:)(?:)及条件表达式及条件表达式及条件表达式及条件表达式 ab?a:b;max=max=图示图示:inta=4,b=5,max;max=(ab)?a:b;条件运算符要求有三个操作对象,条件运算符要求有三个操作对象,称为称为“三目运算符三目运算符”2.2.52.2.5条件运算符条件运算符条件运算符条件运算符(?:)(?:)及条件表达式及条件表达式及条件表达式及条件表达式(1)条件运算符的优先级条件运算符的优先级高于高于赋值运算符赋值运算符,低于,低于算术运算符和算术运算符和关系运算符。关系运
31、算符。max=(ab)?a:bmax=ab?a:bab?a:b+1(ab)?a:(b+1)(2)(2)条件运算符的结合方向是条件运算符的结合方向是“从右至左从右至左”。ab?a:cd?c:d(ab)?a:(cd?c:d)一、赋值运算符一、赋值运算符 =用法:变量用法:变量=表达式表达式作用:将表达式的值赋给左边的变量作用:将表达式的值赋给左边的变量 a=5 a=5;x=y;x=y;注意:与判等符号:与判等符号=相区别相区别 x=x+1;与数学中的等式不同与数学中的等式不同2.2.62.2.6赋值运算符及赋值表达式赋值运算符及赋值表达式赋值运算符及赋值表达式赋值运算符及赋值表达式 二、赋值结果与
32、类型转换二、赋值结果与类型转换1、实型数据(包括单、双精度)、实型数据(包括单、双精度)赋给整型变量赋给整型变量时,舍弃实数时,舍弃实数的小数部分的小数部分2、整型数据赋给、整型数据赋给单、双精度单、双精度变变量时数值不变,但以浮点数量时数值不变,但以浮点数形式存储到变量中形式存储到变量中例:例:#include“stdio.h”voidmain()inti;floatf;i=5.34;f=23;printf(“%d,%fn”,i,f);5,23.0000002.2.62.2.6赋值运算符及赋值表达式赋值运算符及赋值表达式赋值运算符及赋值表达式赋值运算符及赋值表达式 三、赋值表达式三、赋值表达
33、式由赋值运算符将一个变量和一个表达式连接起来的式子称由赋值运算符将一个变量和一个表达式连接起来的式子称为为“赋值表达式赋值表达式”形式:形式:变量变量=表达式表达式 结合方向:自右向左自右向左 如:如:a=5 a=(b=5)a=1+3+5 a=5 a=(b=5)a=1+3+5 计算过程:计算过程:1.1.计算赋值运算符右侧计算赋值运算符右侧“表达式表达式”的值的值 2.2.将计算结果赋给左侧的变量将计算结果赋给左侧的变量 3.3.赋值表达式的值就是被赋值的变量的赋值表达式的值就是被赋值的变量的值。值。想一想:想一想:a=b=c=5a=b=c=5 a=5+(c=6)a=5+(c=6)2.2.62
34、.2.6赋值运算符及赋值表达式赋值运算符及赋值表达式赋值运算符及赋值表达式赋值运算符及赋值表达式 复合赋值运算符复合赋值运算符例子语句例子语句等价语句等价语句+=a+=3;a=a+3;*=x*=y+8;x=x*(y+8)%=x%=3;x=x%3;四、复合的赋值运算符四、复合的赋值运算符在赋值符在赋值符“=”之前加上其它运算符,之前加上其它运算符,构成复合赋值运算符构成复合赋值运算符:+=,-=,*=,/=,%=2.2.62.2.6赋值运算符及赋值表达式赋值运算符及赋值表达式赋值运算符及赋值表达式赋值运算符及赋值表达式 练一练:练一练:如:如:a=2a=(b=10)/(c=2)a+=a-=a*a
35、a=()a=()a=a+(a-(a*a)=?a=()5-40形式:形式:表达式表达式1 1,表达式,表达式2 2,,表达式表达式i i作用:作用:用于连接表达式用于连接表达式计算过程:计算过程:1.1.求解表达式求解表达式1 1的值的值2.2.再求解表达式再求解表达式2 2,表达式,表达式i i3.3.整个逗号表达式的值是表达式整个逗号表达式的值是表达式i i的值。的值。a=632.2.72.2.7逗号运算符及逗号表达式逗号运算符及逗号表达式逗号运算符及逗号表达式逗号运算符及逗号表达式 如如:a=(3+5:a=(3+5,6+8,7*9)6+8,7*9)注意:并不是任何在地方出现的逗号者是逗号运
36、算符并不是任何在地方出现的逗号者是逗号运算符:printf(“%d,%d,%d,”,a,b,cprintf(“%d,%d,%d,”,a,b,c),),一个逗号表达式又可与另一个表达式组成一一个逗号表达式又可与另一个表达式组成一个新的逗号表达式:个新的逗号表达式:(a=3*5,5*4a=3*5,5*4),a+5),a+5逗号运算符是所有运算符中级别最低的:逗号运算符是所有运算符中级别最低的:x=(a=3,6*3)x=(a=3,6*3)x=a=3,6*ax=a=3,6*a X=18X=32.2.72.2.7逗号运算符及逗号表达式逗号运算符及逗号表达式逗号运算符及逗号表达式逗号运算符及逗号表达式 例
37、例#includevoidmain()inta=1;printf(result:%dn,(a=3*a,3*a);result:92.2.72.2.7逗号运算符及逗号表达式逗号运算符及逗号表达式逗号运算符及逗号表达式逗号运算符及逗号表达式 2.2.82.2.8求字节运算符求字节运算符求字节运算符求字节运算符 1.sizeof 1.sizeof 表达式表达式 如:sizeof(float)计算单精度实型数据在内存中所占的字节数,结果为4。sizeof(a)2.sizeof2.sizeof(类型名)(类型名)求字节运算符是sizeof,它用于计算变量或某种类型的量在内存中所占的字节数。用法有两种:功
38、能是计算出表达式计算结果所占用内存的字节数整型、实型(包括单、双精度)、字符型数据间可以混合运算整型、实型(包括单、双精度)、字符型数据间可以混合运算例如:例如:*A*A 是合法的是合法的运算时,不同类型的数据要先转换成同一类型,然后进行运算转换规则:float型数据在运算时一律转换成double型不同类型进行混合运算时,不同类型进行混合运算时,按照类型级别由低到高的按照类型级别由低到高的顺序转换顺序转换字符型和short型在运算时一律转换成int型高doublefloatlongunsigned低intchar,short2.2.92.2.9类型转换类型转换类型转换类型转换 1.1.自动类型
39、转换自动类型转换2 2、强制类型转换强制类型转换利用强制类型转换运算符将利用强制类型转换运算符将一个表达式转换成所需类型一个表达式转换成所需类型形式:(类型名)表达式形式:(类型名)表达式 如:(double)adouble)a (int)(x+y)(int)(x+y)注意:注意:与(与(int)x+yint)x+y不同不同 (int)8.5%5int)8.5%5例例强制类型转换强制类型转换#include stdio.hmain()floatx;inti;x=3.6;i=(int)x;printf(“x=%.1f,i=%d”,x,i);结果:结果:x=3.6,i=32.2.92.2.9类型转换类型转换类型转换类型转换