《C语言从入门到精通非常不错的课件第2章课件》由会员分享,可在线阅读,更多相关《C语言从入门到精通非常不错的课件第2章课件(42页珍藏版)》请在金锄头文库上搜索。
1、2.1 C2.1 C语言的基本数据类型语言的基本数据类型2.2 2.2 常量和变量常量和变量2.3 2.3 运算符与表达式运算符与表达式2.4 2.4 数据类型转换数据类型转换返回C语言从入门到精通非常不错的课件第2章 字符类型(字符类型(charchar) 整型整型( (short,int,long,unsignedshort,int,long,unsigned) 单精度型(单精度型(floatfloat) 实型(浮点型)实型(浮点型) 双精度型(双精度型(doubledouble) 枚举类型(枚举类型(enumenum) 数组类型(数组类型( ) 构造类型构造类型 结构体类型(结构体类型(
2、structstruct) 共用体类型(共用体类型(unionunion) 指针类型(指针类型(* *) 空类型(空类型(voidvoid)基本类型基本类型数数据据类类型型2.1 C2.1 C语言的基本数据类型语言的基本数据类型一、数据类型概述第2章 C语言的基本数据类型与表达式下一页下一页C语言从入门到精通非常不错的课件第2章 * 八进制的数码范围为八进制的数码范围为07; 018 * 十六进制的十六进制的数码除了数字数码除了数字0 09 9外外, , 还使用英文字母还使用英文字母a f (或或A F)表示表示1015。 如:如:0x1e 二、整型第2章 C语言的基本数据类型与表达式下一页下
3、一页1 1、常量:常量: (1) (1) 十进制形式十进制形式: :与数学上的整数表示相同;与数学上的整数表示相同; 例如例如: 12, -100, 0: 12, -100, 0 (2) (2) 八进制形式八进制形式: :在数码前加数字在数码前加数字0 0; 例如例如: 012=1*8: 012=1*81 1+2*8+2*80 0=10(=10(十进制)十进制) (3) (3) 十六进制形式十六进制形式: :在数码前加在数码前加0X0X(数字数字0和字母和字母X)。)。 例如例如: 0x12=1*16: 0x12=1*161 1+2*16+2*160 0=18(=18(十进制)十进制)注意注意
4、C语言从入门到精通非常不错的课件第2章2、分类:分类: 根据数据所占的二进制位数分为根据数据所占的二进制位数分为: :int、short、long; 同样存储长度的数据又分同样存储长度的数据又分unsigned、signed; 故可组合出六种类型。故可组合出六种类型。3、值域:值域: 由机器中数据的存储长度决定。由机器中数据的存储长度决定。 如如Turbo C中,有中,有 short(2字节字节)int(2字节字节) long(4字节字节)第2章 C语言的基本数据类型与表达式下一页下一页Turbo C所支持的整型数据请所支持的整型数据请 点击点击C语言从入门到精通非常不错的课件第2章1 1、常
5、量:常量:(1) (1) 十进制小数形式:十进制小数形式:由数字和小数点组成;由数字和小数点组成; 例如例如: 3.4, 4., .3: 3.4, 4., .3。(2) (2) 指数形式:指数形式:“十进制小数十进制小数”+“ e(”+“ e(或或E)”+“E)”+“十进制数整十进制数整数数”。 例如例如: 12.5e-6: 12.5e-6 表示表示12.512.51010-6 。 注意注意三、实型第2章 C语言的基本数据类型与表达式下一页下一页2、分类:分类: 关键字关键字 字节数字节数 取值范围取值范围 精度精度( (位位) ) float 4 3.4 float 4 3.41010-38
6、 3.43.4101038 7 7 double 8 1.7 double 8 1.71010-308 1.71.71010308 1515 小数点不能单独出现;小数点不能单独出现; 0. 0. .0 .0 . . e e或或E E的两边必须有数,且其后面必须为整数;的两边必须有数,且其后面必须为整数; 如:如: 6E0.2 6E0.2 e5e5 C语言从入门到精通非常不错的课件第2章1 1、常量:常量: (1) (1) 用单引号括起来的一个字符;如:用单引号括起来的一个字符;如:A、 1、?等等。 (2) (2) 用单引号括起来的由反斜杠用单引号括起来的由反斜杠( ( ) )引导的转义字符。
7、引导的转义字符。 字符形式字符形式 功能功能 n n 换行换行 t t 横向跳格横向跳格 b b 退格退格 r r 回车回车 反斜杠字符反斜杠字符 单引号字符单引号字符 ddd 8 ddd 8进制数表示的进制数表示的ASCIIASCII码对应的字符码对应的字符 xhh 16 xhh 16进制数表示的进制数表示的ASCIIASCII码对应的字符码对应的字符四、字符类型第2章 C语言的基本数据类型与表达式下一页下一页C语言从入门到精通非常不错的课件第2章2、分类:分类: char char 和和 unsigned charunsigned char;3 3、值域:值域: 每每个个字字符符型型数数据
8、据在在内内存存中中占占一一个个字字节节;包包括括ASCIIASCII字字符符表表中中的所有字符(可显示字符和非显示字符)。的所有字符(可显示字符和非显示字符)。4 4、字符串:字符串: 是用一对双引号括起来的字符序列。是用一对双引号括起来的字符序列。 如:如:“SHANGHAI”“SHANGHAI”,“AbcdeFGHijk”“AbcdeFGHijk”,“How are you”“How are you”。 注意注意 a a与与“a”“a”的区别。的区别。第2章 C语言的基本数据类型与表达式例如:字符例如:字符A A的的ASCIIASCII码为:码为: 65D 65D(十进制)(十进制)=41
9、H=41H(十六进制)(十六进制)=101Q=101Q(八进制)(八进制) 字符字符A A可以表示为可以表示为AA、x41x41、101101。返回C语言从入门到精通非常不错的课件第2章一、常量与符号常量 常常量量是是指指在在程程序序运运行行中中,其其数数值值不不能能被被改改变的量。变的量。 常量又可分为常量又可分为直接常量直接常量和和符号常量符号常量。2.2 2.2 常量与变量常量与变量第2章 C语言的基本数据类型与表达式下一页下一页C语言从入门到精通非常不错的课件第2章 120 、 -100、 0; 0120、 072; 0xFFFF、 0x1e、0X28AF,0XED4 ; 120L,
10、200L ; 长整型常量长整型常量 3.14、 -3.1、 5.12E-6 ; a 、#、n、101 ; 099、12f、 0xg 、48EA ; 019.5 、1e-08; 实实型型常常量量只只能能用用十十进进制制形形式式表示表示 2.1E10.2、E-6、6.4E+4.8、E9 ; changsha 、+?ab ; 、p 、ab ;1、直接常量:直接常量:是在程序中直接引用的数据。是在程序中直接引用的数据。请请判判断断这这些些常常量量正正确确与与否否:第2章 C语言的基本数据类型与表达式下一页下一页C语言从入门到精通非常不错的课件第2章 2、符号常量符号常量 是是用标用标识符来表示一个数据
11、;识符来表示一个数据;在程序不能给它赋值。在程序不能给它赋值。 定义形式定义形式: #define 标识符标识符 常量数据常量数据 例如例如: #define PI 3.14159 在程序预处理时,凡是出现标识符在程序预处理时,凡是出现标识符PI的地方都将用的地方都将用数据数据3.14159来替换。来替换。 如如: 2*2.3*PI 就就等价于等价于 2*2.3*3.14159。二、变量 变量变量是指是指以以标识标识符符为为名字,其名字,其值值可以改可以改变变的量。的量。 变变量量代代表表计计算算机机内内存存中中的的某某一一存存储储空空间间,该该存存储储空空间间中存放中存放的数据就是变量的值。
12、的数据就是变量的值。 在同一程序块中,在同一程序块中,变量变量不能不能被重复定义。被重复定义。 使用变量时必须使用变量时必须“先定义,后使用先定义,后使用”。 第2章 C语言的基本数据类型与表达式下一页下一页C语言从入门到精通非常不错的课件第2章1、定义形式:定义形式:类型标识符类型标识符: 变量名变量名1 ,变量名变量名2,变量名变量名3.;自己设定,满足自己设定,满足标识符的规定。标识符的规定。如:如:int,int,float,charfloat,char;不可省;不可省2、变量初始化变量初始化 在说明变量的同时给变量一个初始值。在说明变量的同时给变量一个初始值。 例如例如int a=5
13、, b=3; int a=5, b=3; int a=b=c=3; int a=b=c=3; int a,b,c; a=b=c=3; int a,b,c; a=b=c=3; 第2章 C语言的基本数据类型与表达式下一页下一页例如例如:int a,b,c ; float x,y; char c1,c2; 或或 int c1,c2;C语言从入门到精通非常不错的课件第2章 mainmain( ) int x int x,y y,z z,w w;/*/*定义定义x x,y y,z z,w w为整型变量为整型变量*/*/ unsigned int k unsigned int k; /* /*定义定义k
14、k为无符号整型变量为无符号整型变量*/*/ x=10 x=10;y=-20y=-20;k=30k=30; z=x+k z=x+k;w=y+kw=y+k; printf printf(“x+k=%d“x+k=%d,y+k=%dn”y+k=%dn”,z z,w w); ; 例例2-1:程序运行结果为:程序运行结果为: x+k=40x+k=40,y+k=10y+k=10第2章 C语言的基本数据类型与表达式下一页下一页C语言从入门到精通非常不错的课件第2章 3 3、局部变量 C C语言程序是由函数组成的,且有且只能有一个语言程序是由函数组成的,且有且只能有一个mainmain函数。函数。 变量定义可以
15、出现在函数内,亦可出现在函数外变量定义可以出现在函数内,亦可出现在函数外或者是函数的参数中。或者是函数的参数中。 按照变量定义语句出现的位置,可以分为:按照变量定义语句出现的位置,可以分为:局部变量:局部变量:在函数内定义;只在该函数中才能使用。在函数内定义;只在该函数中才能使用。 全局变量:全局变量:在函数外定义;从它被定义的位置起在函数外定义;从它被定义的位置起, ,在在 之后的之后的所有函数中有效。所有函数中有效。形式参数:形式参数:定义为函数的参数;只在该函数中才能定义为函数的参数;只在该函数中才能 使用。使用。第2章 C语言的基本数据类型与表达式下一页下一页C语言从入门到精通非常不错
16、的课件第2章 在在函函数数内内部部说说明明的的变变量量或或者者在在复复合合语语句句中中定定义义的的变变量量称称为为局局部部变变量量。其其作作用用范范围围是是其其所所在在的的函函数数或或复复合合语句。语句。第2章 C语言的基本数据类型与表达式下一页下一页void float(int a)int b, c; Mvoid f2(int x,int y)int i,j;M C语言从入门到精通非常不错的课件第2章 又又称称全全程程变变量量或或外外部部变变量量,在在函函数数外外部部说说明明。其其作作用用范范围围从从它它被被定定义义的的位位置置起起,在在之之后后的的程程序序段段中中都都是是起起作作用用的。的
17、。4、全局变量全局变量第2章 C语言的基本数据类型与表达式下一页下一页C语言从入门到精通非常不错的课件第2章 如如果果在在全全局局变变量量定定义义之之前前的的函函数数想想引引用用该该外外部部变变量量,则则应应该该在在该该函函数数中中用用关关键键字字externextern作作“外外部部变变量量说说明明”。第2章 C语言的基本数据类型与表达式下一页下一页C语言从入门到精通非常不错的课件第2章int a, b; int a, b; void swap( ) void swap( ) int t; int t; t = a; a = b; b = t; t = a; a = b; b = t; pr
18、intf(“sn”,a,b); printf(“sn”,a,b); main()main() printf( printf(“ Enter a,b: Enter a,b:”);); scanf( scanf(“%d,%d%d,%d”, &a, &b);, &a, &b); swap( ); swap( ); printf ( printf (“main:a=%d,b=%dmain:a=%d,b=%d”,a,b); ,a,b); Enter a,b:Enter a,b:5,35,3 s smain:a=3,b=5main:a=3,b=5运行结果运行结果第2章 C语言的基本数据类型与表达式下一页下
19、一页例如例如C语言从入门到精通非常不错的课件第2章int a, b; int a, b; void swap( ) void swap( ) int t; int t; t = a; a = b; b = t; t = a; a = b; b = t; printf(“sn”,a,b); printf(“sn”,a,b); main()main() printf( printf(“ Enter a,b: Enter a,b:”);); scanf( scanf(“%d,%d%d,%d”, &a, &b);, &a, &b); swap( ); swap( ); printf ( printf
20、(“main:a=%d,b=%dmain:a=%d,b=%d”,a,b); ,a,b); int a,b;int a,b;程程序序在在编编译译时时,屏屏幕幕将提示有错误将提示有错误: : Undefine symbol Undefine symbol a a Undefine symbol Undefine symbol b b第2章 C语言的基本数据类型与表达式下一页下一页例如例如运行结果运行结果C语言从入门到精通非常不错的课件第2章int a, b; int a, b; void swap( ) void swap( ) int t; int t; t = a; a = b; b = t;
21、 t = a; a = b; b = t; printf(“sn”,a,b); printf(“sn”,a,b); main()main() printf( printf(“ Enter a,b: Enter a,b:”);); scanf( scanf(“%d,%d%d,%d”, &a, &b);, &a, &b); swap( ); swap( ); printf printf ( (“main:a=%d,b=%dmain:a=%d,b=%d”,a,b); ,a,b); int a=5,b=3;int a=5,b=3;Enter a,b:Enter a,b:5,35,3 s smain:a
22、=5,b=3main:a=5,b=3第2章 C语言的基本数据类型与表达式返回int a,b;int a,b;例如例如运行结果运行结果C语言从入门到精通非常不错的课件第2章 按按操作功能操作功能运运算符大致可分为算符大致可分为算术运算符、关算术运算符、关系运算符、逻辑系运算符、逻辑运算符、按位运运算符、按位运算符以及其它运算符以及其它运算符如赋值运算算符如赋值运算符、符、条件运算符、条件运算符、逗号运算符等。逗号运算符等。 表表达达式式是是由由操操作作数数和和运运算算符符组成的序列。组成的序列。 2.3 2.3 运算符与表达式运算符与表达式算术运算符算术运算符 + - * / % + - * /
23、 %关系运算符关系运算符 = = = = = != !=逻辑运算符逻辑运算符 ! & & 位运算符位运算符 | & | &赋值运算符赋值运算符 = = 条件运算符条件运算符 ?: :逗号运算符逗号运算符 ,指针运算符指针运算符 * * 和和 & &求字节数运算符求字节数运算符 sizeof sizeof强制类型转换运算符强制类型转换运算符分量运算符分量运算符 下标运算符下标运算符 第2章 C语言的基本数据类型与表达式下一页下一页C语言从入门到精通非常不错的课件第2章1 1、 运算符运算符 +( +(加加) ):3+43+4、 +3 +3 -( -(减减) ):3-53-5、 -5 -5 *(
24、*(乘乘) ):3*53*5 /( /(除除) ):5/25/2的值为的值为2 2;5.0/25.0/2的值为的值为2.52.5; %( %(取余取余) ):5%35%3的值为的值为2 2; -5%3 -5%3的值为的值为-2-2; 5%(-3) 5%(-3)的值为的值为2 2; -5%(-3) -5%(-3)的值为的值为-2-2; 12.3%3 12.3%3 若若a a能被能被b b整除,则有:整除,则有:a%b=0 a%b=0 第2章 C语言的基本数据类型与表达式下一页下一页一、 算术运算符和算术表达式C语言从入门到精通非常不错的课件第2章 2 2、算术表达式算术表达式 用算术运算符和括符
25、将操作数连接起来的式子。用算术运算符和括符将操作数连接起来的式子。 优先级:()优先级:() * *、/ /、% +% +、- - 结合性:从左至右;结合性:从左至右; 表达式的值:表达式的值: 数值型数值型(int(int、longlong、unsignedunsigned、double)double); 已知:已知: float a=2.0; float a=2.0; int b=6,c=3; int b=6,c=3; 求解:求解: a*b/c-1.5+a+fabs(- a*b/c-1.5+a+fabs(-5)=5)=?第2章 C语言的基本数据类型与表达式下一页下一页例如例如C语言从入门到
26、精通非常不错的课件第2章double float long unsigned int char,short float a=2.0; int b =6,c =3;float a=2.0; int b =6,c =3; a*b/c -1.5 +a +fabs(-5)a*b/c -1.5 +a +fabs(-5)12.012.0/3/354.0 4.0 - 1.5- 1.52.5 2.5 + 97(int)+ 97(int)99.5 99.5 + 5+ 5104.5104.5(double)(double)第2章 C语言的基本数据类型与表达式下一页下一页解:解:C语言从入门到精通非常不错的课件第2
27、章等价于等价于 i=i+1; i=i+1; j=i;i+; j=i;i+; 所以所以i i的值为的值为4 4,j j的值为的值为3.3.i+;j=i; i+;j=i; 所以所以i i的值为的值为4 4,j j的值为的值为4.4.例如:例如:(3) i=3;(3) i=3; j=+i; j=+i;第2章 C语言的基本数据类型与表达式下一页下一页3 3、自增与自减运算符自增与自减运算符 +i,-i+i,-i:使用之前使:使用之前使i i的值增的值增1 1(或减(或减1 1);); i+,i- i+,i-:使用之后使:使用之后使i i的值增的值增1 1(或减(或减1 1););(1) i+;(1)
28、i+; +i; +i;(2) i=3;(2) i=3; j=i+; j=i+;C语言从入门到精通非常不错的课件第2章 结合性:结合性:自右至左自右至左。 如:如: i = 2; i = 2; j = -i+; j = -i+; 等价于:等价于:j=-(i+);j=-(i+); 即:即: j=-i;i+; j=-i;i+; “+”与与”- -“是是同同优先级优先级 所以所以i i的值为的值为3 3,j j的值为的值为-2-2。 “+”“+”或或“-”“-”自增与自减运算符的使用。自增与自减运算符的使用。 如:设如:设i=3i=3,k=(i+)+(i+)+(i+)k=(i+)+(i+)+(i+),
29、k=k=? 如:设如:设i=3i=3,j=4j=4,k=i+jk=i+j,k=k=?第2章 C语言的基本数据类型与表达式下一页下一页注意注意C语言从入门到精通非常不错的课件第2章 1 1、6 6种关系运算符:种关系运算符: = = != = = != 2 2、关关系系表表达达式式:用用关关系系运运算算符符将将表表达达式式连连接接起起来来的的式子式子 优先级:优先级: ( = ) ( = ) ( = != )( = != ) 结合性:自左至右;结合性:自左至右; 表达式的值:表达式的值: 若为真,则结果为若为真,则结果为1 1; 若为假,则结果为若为假,则结果为0 0。35 35 的值为的值为
30、0 0;32 32 的值为的值为 0 0;3+(43)*43+(43)*4的值为的值为 3 3;3+43+43*4 & | 结合性:自左至右;结合性:自左至右; 表达式的值:表达式的值: 若为真,则结果为若为真,则结果为1 1; 若为假,则结果为若为假,则结果为0 0。 三、逻辑运算符和逻辑表达式第2章 C语言的基本数据类型与表达式下一页下一页1 1、3 3种逻辑运算符:种逻辑运算符:& | !& | ! 逻辑量:可以是整型、实型、字符型和指针类型,逻辑量:可以是整型、实型、字符型和指针类型, 00假假 非非00真;真; 如:如:0 0,0.00.0,0,NULL0,NULL都代表都代表假假。
31、C语言从入门到精通非常不错的课件第2章 int a=5; float b=3.5; !a (0) !(a b) (1) a & b (1) !a&b (0) !a&!b (0) !(a&b) (0) &:只要有一个为假,结果则为假;只要有一个为假,结果则为假; a b (1) !a|b (1) !a|!b (0) !(a|b) (0) |:只要有一个为真,结果则为真;只要有一个为真,结果则为真; (a 0) (0) (a 0) (1)例如例如第2章 C语言的基本数据类型与表达式下一页下一页C语言从入门到精通非常不错的课件第2章 ! ! 高高 算术运算符算术运算符 关系运算符关系运算符 & &和
32、和| | 赋值运算符赋值运算符 低低 4 - 04 - 01 & 21 & 28 48 3 & 2 | 8 3 & 2 | 8 4 - !5第2章 C语言的基本数据类型与表达式下一页下一页C语言从入门到精通非常不错的课件第2章第2章 C语言的基本数据类型与表达式下一页下一页注意注意在逻辑表达式的求解中,并不是所有的逻在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才个逻辑运算符才能求出表达式的解时,才执行该运算符。执行该运算符。例例如如(1)a = 0; b = 1; (1)a = 0; b = 1;
33、 c = a+ & ( b = 3 ); c = a+ & ( b = 3 ); 结果结果: a: a为为1,b1,b为为1,c1,c为为0 0。 (2)a = 1; b = 1; c=0; (2)a = 1; b = 1; c=0; d = -a d = -a b- b- (c = b+3 ); (c = b+3 ); 结果结果: a: a为为0,b0,b为为0,c0,c为为0,d0,d为为1 1。C语言从入门到精通非常不错的课件第2章 (1) n(1) n是小于是小于m m的偶数:的偶数: nm&n%2=0 nm&n%2=0 (2)year (2)year是闰年是闰年: : (能被(能被4
34、 4整除但不能被整除但不能被100100整除或能被整除或能被400400整除)整除) year %4=0&year%100!=0|year%400=0第2章 C语言的基本数据类型与表达式下一页下一页例如:例如:逻辑表达式一般用于控制语句中的条件:逻辑表达式一般用于控制语句中的条件:C语言从入门到精通非常不错的课件第2章 1 1、赋值运算符赋值运算符 = = 2 2、赋赋值值表表达达式式:用用赋赋值值运运算算符符将将变变量量和和表表达达式式连连接接起起来来的式子的式子 形式形式: : = 求值规则求值规则: : 将将“=”“=”右边表达式的值赋给左边的变量。右边表达式的值赋给左边的变量。 优先级
35、:优先级: ! ! 算术算术 关系关系 &和和| 赋值赋值 结合性:自右至左;结合性:自右至左; 表达式的值:被赋值变量的值。表达式的值:被赋值变量的值。四、赋值运算符和赋值表达式第2章 C语言的基本数据类型与表达式下一页下一页例如例如(1) x=(y=12)/4 y(1) x=(y=12)/4 y值为值为1212,x x值为值为3 3,表达式的值为,表达式的值为3 3(2) x=y=12/4 y(2) x=y=12/4 y值为值为3 3,x x值为值为3 3,表达式的值为,表达式的值为3 3(3) x=(y=12/4) y(3) x=(y=12/4) y值为值为3 3,x x值为值为3 3,
36、表达式的值为,表达式的值为3 3(4) (x=y)=12/4 (4) (x=y)=12/4 C语言从入门到精通非常不错的课件第2章 3 3、复合赋值运算符复合赋值运算符 *= *=、/=/=、 %= %=、 += +=、 -=, = -=, =, &= =, &=、 = =、 = =第2章 C语言的基本数据类型与表达式下一页下一页(1) a+=b (1) a+=b 相当于相当于 a=a+b a=a+b a*=b a*=b 相当于相当于 a=a*b a=a*b a*=b+c a*=b+c 相当于相当于 a=a*(b+c) a=a*(b+c) 而不是而不是 a=a*b+c a=a*b+c (2)
37、(2) 设设a=12a=12,计算表达式,计算表达式a+=a-=a*12a+=a-=a*12和和a+=a-=a*=12a+=a-=a*=12 的值的值注意注意复合运算符是一个运算符复合运算符是一个运算符, ,但功能上但功能上, ,是两个运算符功能的组合。是两个运算符功能的组合。 例如:例如:C语言从入门到精通非常不错的课件第2章 1 1、条件运算符条件运算符 ? ?和和: : , ,它们与三个操作数组组成三元运算。它们与三个操作数组组成三元运算。 形式为形式为: : ? ? :3 求值规则和表达式的值求值规则和表达式的值: : 真真( (非非0),0),求解表达式求解表达式2 2 求解表达式求
38、解表达式1 1 条件表达式的值条件表达式的值 假假(0),(0),求解表达式求解表达式3 3 四、其它运算符第2章 C语言的基本数据类型与表达式下一页下一页 int max,int max,a=5;b=3a=5;b=3 max=ab?a:b max max=ab?a:b max及赋值表达式的及赋值表达式的 值均为值均为5;5; ab?a:b+1 a 条件条件 赋值赋值 又例如:又例如:第2章 C语言的基本数据类型与表达式下一页下一页C语言从入门到精通非常不错的课件第2章 2 2、逗号运算符:逗号运算符: , 形式形式: : 逗号表达式逗号表达式1 1,逗号表达式,逗号表达式2 2,逗号表达式,
39、逗号表达式n n 求值规则求值规则: : 从左至右依次计算各表达式的值从左至右依次计算各表达式的值; 优先级:优先级: 最低;最低; 结合性:自左至右;结合性:自左至右; 表达式的值:最后一个表达式的值。表达式的值:最后一个表达式的值。第2章 C语言的基本数据类型与表达式下一页下一页 结合性:自右至左;结合性:自右至左; y = x10 ? x/10 : x0 ? x: -x y = x10 ? x/10 : x0 ? x: -x; 等价于等价于: : y = x10 ? x/10 :(x10 ? x/10 :(xb ab 截断高截断高a-ba-b位,送低位,送低b b 位;位; 有符号数据有
40、符号数据 有符号变量:符号扩展;有符号变量:符号扩展; 其他情况:高其他情况:高a-ba-b位全补位全补0 0。 符号扩展:符号扩展:符号位为符号位为0 0,剩余的高位补,剩余的高位补0 0; 符号位为符号位为1 1,剩余的高位补,剩余的高位补1 1。float f=23; 23.00000 f (7位)位)double f=A; 23.00 f(15位)位)abab第2章 C语言的基本数据类型与表达式下一页下一页(2) (2) 整型(字符型)整型(字符型) 实型:实型: 补足有效位;补足有效位;C语言从入门到精通非常不错的课件第2章第2章 C语言的基本数据类型与表达式返回三、强制类型转换 形
41、式:形式: ( (类型名类型名) )表达式表达式 强制类型转换时强制类型转换时, ,得到所需类型的中间变量,原来得到所需类型的中间变量,原来变量的类变量的类 型不会改变。型不会改变。例例如如 int a=2,b=5; float x=4.4; int a=2,b=5; float x=4.4;则有:则有: 表达式表达式 结果结果 b/a 2 b/a 2 (float)b/a 2.5 (float)b/a 2.5 (float)(b/a) 2.0 (float)(b/a) 2.0 (int)x%a+x 4.4 (int)x%a+x 4.4 (int)x%(a+x) (int)x%(a+x) C语言从入门到精通非常不错的课件第2章