1、第第 2 2 章章 C C语言的基本数据类型与表达式语言的基本数据类型与表达式 2.1 C语言的基本数据类型 2.2 常量和变量 2.3 运算符与表达式 2.4 数据类型转换C语言程序设计教程2022/12/242 字符型(字符型(charchar)整型(整型(short,int,long,unsignedshort,int,long,unsigned)单精度型(单精度型(floatfloat)实型实型 双精度型(双精度型(doubledouble)枚举类型(枚举类型(enumenum)数组类型(数组类型()构造类型构造类型 结构体类型(结构体类型(structstruct)共用体类型(共用体
2、类型(unionunion)指针类型(指针类型(*)空类型(空类型(voidvoid)基本类型基本类型数据类型数据类型2.1 C2.1 C语言的基本数据类型语言的基本数据类型一、数据类型概述第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/243类型名类型名字宽字宽(字节字节)Char1Signed char1Unsigned char1Short int2Signed short int2Unsigned shortint2int2或或4Signed int2或或4Unsigned int2或或4Long int4Signed long int4Unsigned long
3、 int4Float4Double8Long double16int000000020004000600080010floatdouble第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2441 1、常量:常量:(1)(1)十进制形式十进制形式:与数学上的整数表示相同;与数学上的整数表示相同;例如例如:12,-100,0:12,-100,0(2)(2)八进制形式八进制形式:在数码前加数字在数码前加数字0 0;例如例如:012=1:012=1*8 81 1+2+2*8 80 0=10(=10(十进制)十进制)(3)(3)十六进制形式十六进制形式:在数码前加在数码前加0X0X
4、(数字数字0和字母和字母X)。)。例如例如:0 x12=1:0 x12=1*16161 1+2+2*16160 0=18(=18(十进制)十进制)*八进制的数码范围为八进制的数码范围为07;018 *十六进制的十六进制的数码除了数字数码除了数字0 09 9外外,还使用英文字母还使用英文字母a f(或或A F)表示表示1015。如:如:0 x1e 二、整型第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/245 2、分类:分类:根据数据所占的二进制位数分为根据数据所占的二进制位数分为:int、short、long;同样存储长度的数据又分同样存储长度的数据又分unsigned、
5、signed;故可组合出六种类型。缺省值为故可组合出六种类型。缺省值为shortshort。如:如:25(short),25l(25(short),25l(长整型长整型),25u(),25u(无符号无符号),25ul(),25ul(无符号长无符号长)3、值域:值域:由机器中数据的存储长度决定。由机器中数据的存储长度决定。如如Turbo C中,有中,有 short(2字节字节)int(2字节字节)long(4字节字节)关键字关键字 所占位数所占位数 取值范围取值范围 short 16(2B)short 16(2B)-32768-327683276732767 unsigned short 16(
6、2B)unsigned short 16(2B)0 06553565535 int 16(2B)int 16(2B)-32768-327683276732767 unsigned 16(2B)unsigned 16(2B)0 06553565535 long 32(4B)-2147483648 long 32(4B)-214748364821474836472147483647 unsigned long 32(4B)unsigned long 32(4B)0 042949672954294967295第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2461 1、常量:常
7、量:(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 。小数点不能单独出现;小数点不能单独出现;0.0.0 .0 .e e或或E E的两边必须有数,且其后面必须为整数;的两边必须有数,且其后面必须为整数;如:如:6E0.2 6E0.2 e5e5 2、分类:分类:关键字关键字 字节数字节数 取值范围取值范围 精度
8、精度(位位)float 4 3.4 float 4 3.41010-38 3.43.4101038 7 7 double 8 1.7 double 8 1.71010-308 1.71.71010308 1515 缺省值类型为缺省值类型为doubledouble。注意注意第2章 C语言的基本数据类型与表达式三、实型C语言程序设计教程2022/12/2471 1、常量:常量:(1)(1)用单引号括起来的一个字符;如:用单引号括起来的一个字符;如:A、1、?等等。(2)(2)用单引号括起来的由反斜杠用单引号括起来的由反斜杠()引导的转义字符。引导的转义字符。字符形式字符形式 功能功能 n n 换行
9、换行 t t 横向跳格横向跳格 b b 退格退格 r r 回车回车 反斜杠字符反斜杠字符 单引号字符单引号字符 ddd 8ddd 8进制数表示的进制数表示的ASCIIASCII码对应的字符码对应的字符 xhh 16xhh 16进制数表示的进制数表示的ASCIIASCII码对应的字符码对应的字符第2章 C语言的基本数据类型与表达式四、字符类型C语言程序设计教程2022/12/248例如:字符例如:字符A A的的ASCIIASCII码为:码为:65D65D(十进制)(十进制)=41H=41H(十六进制)(十六进制)=101Q=101Q(八进制)(八进制)字符字符A A可以表示为可以表示为AA、x4
10、1x41、101101。2、分类:分类:char char 和和 unsigned charunsigned char;3 3、值域:值域:每个字符型数据在内存中占每个字符型数据在内存中占一一个字节;包括个字节;包括ASCIIASCII字符字符表中的所有字符(可显示字符和非显示字符)。表中的所有字符(可显示字符和非显示字符)。4 4、字符串:字符串:是用一对双引号括起来的字符序列。是用一对双引号括起来的字符序列。如:如:“SHANGHAI”SHANGHAI”,“AbcdeFGHijk”AbcdeFGHijk”,“How are How are you”you”。注意注意第2章 C语言的基本数据
11、类型与表达式 a a与与“a”a”的区别。的区别。C语言程序设计教程2022/12/249一、常量与符号常量 常量是指在程序运行中常量是指在程序运行中,其数值不能被改变的量。其数值不能被改变的量。常量又可分为直接常量和符号常量。常量又可分为直接常量和符号常量。第2章 C语言的基本数据类型与表达式2.2 2.2 常量与变量常量与变量C语言程序设计教程2022/12/2410 120、-100、0;0120、072;0 xFFFF、0 x1e、0X28AF,0XED4;120L,200L;长整型常量长整型常量 3.14、-3.1、5.12E-6;a、#、n、101;099、12f、0 xg、48E
12、A;019.5、1e-08;实型常量只能用十进制形式表示实型常量只能用十进制形式表示 2.1E10.2、E-6、6.4E+4.8、E9;changsha、+?ab;、p、ab;第2章 C语言的基本数据类型与表达式1、直接常量:直接常量:是在程序中直接引用的数据。是在程序中直接引用的数据。请判断这些常量正确与否:请判断这些常量正确与否:C语言程序设计教程2022/12/24112、符号常量符号常量 是是用标用标识符来表示一个数据;识符来表示一个数据;在程序不能给它赋值。在程序不能给它赋值。定义形式定义形式:#define 标识符标识符 常量数据常量数据 例如例如:#define PI 3.141
13、59 在程序预处理时,凡是出现标识符在程序预处理时,凡是出现标识符PI的地方都将用的地方都将用数据数据3.14159来替换。来替换。如如:2*2.3*PI 就就等价于等价于 2*2.3*3.14159。第2章 C语言的基本数据类型与表达式二、变量 变量是指变量是指以标识符为名字,其值可以改变的量。以标识符为名字,其值可以改变的量。变量代表计算机内存中的某一存储空间,该存储空间变量代表计算机内存中的某一存储空间,该存储空间 中存放中存放的数据就是变量的值。的数据就是变量的值。在同一程序块中,在同一程序块中,变量变量不能被重复定义。不能被重复定义。使用变量时必须使用变量时必须“先定义,后使用先定义
14、,后使用”。C语言程序设计教程2022/12/24121、定义形式:定义形式:类型标识符类型标识符:变量名变量名1,变量名变量名2,变量名变量名3.;例如例如:int a,b,c;float x,y;char c1,c2;或或 int c1,c2;自己设定,满足自己设定,满足标识符的规定。标识符的规定。如:如:int,int,float,charfloat,char;不可省;不可省第2章 C语言的基本数据类型与表达式2、变量初始化变量初始化 在说明变量的同时给变量一个初始值。在说明变量的同时给变量一个初始值。例如例如int a=5,b=3;int a=5,b=3;int a=b=c=3;int
15、 a=b=c=3;int a,b,c;a=b=c=3;int a,b,c;a=b=c=3;变量名变量名a变量地址变量地址5变量值变量值C语言程序设计教程2022/12/2413 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 k为无符号整型变量为无符号整型变量*/x=10 x=10;y=-20y=-20;k=30k=30;z=x+kz=x+k;w=y+kw=y+k;printfprintf(“x+k=%dx+k=%d,y+k=%dn”
16、y+k=%dn”,z z,w w);第2章 C语言的基本数据类型与表达式例例2-1:程序运行结果为:程序运行结果为:x+k=40 x+k=40,y+k=10y+k=10C语言程序设计教程2022/12/2414例,完善程序(例,完善程序(s1-3.c)程序功能:下面的程序是求整数程序功能:下面的程序是求整数a/b 的商和余数,的商和余数,请用正确的表达式填空。请用正确的表达式填空。main()int a,b,c,d;a=100;b=30;_printf(“a=%d,b=%d,c=%d,d=%dn”,a,b,c,d);第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2415
17、 按操作功能运按操作功能运算符大致可分为算符大致可分为算算术运算符、关系运术运算符、关系运算符、逻辑运算符、算符、逻辑运算符、按位运算符以及其按位运算符以及其它运算符如赋值运它运算符如赋值运算符、算符、条件运算符、条件运算符、逗号运算符等。逗号运算符等。单目、双目、单目、双目、三目运算符三目运算符 表达式是由操表达式是由操作数和运算符组成作数和运算符组成的序列。的序列。第2章 C语言的基本数据类型与表达式2.3 2.3 运算符与表达式运算符与表达式算术运算符算术运算符 +-+-*/%/%关系运算符关系运算符 =!=!=逻辑运算符逻辑运算符 !&位运算符位运算符|&|&赋值运算符赋值运算符 =条
18、件运算符条件运算符?:逗号运算符逗号运算符 ,指针运算符指针运算符 *和和&求字节数运算符求字节数运算符 sizeofsizeof强制类型转换运算符强制类型转换运算符分量运算符分量运算符 下标运算符下标运算符 C语言程序设计教程2022/12/2416 一、算术运算符和算术表达式 1 1、运算符运算符 +(+(加加):3+43+4、+3 -(+3 -(减减):3-53-5、-5 -5 *(乘乘):3 3*5 5 /(/(除除):5/25/2的值为的值为2 2;5.0/25.0/2的值为的值为2.52.5;如果两个操作数均为如果两个操作数均为intint,则结果也是,则结果也是intint,小数
19、部,小数部分将去掉。如果两个数中有浮点型,则结果也是分将去掉。如果两个数中有浮点型,则结果也是floatfloat。例如:例如:3.0+1/23.0+1/2*(98%100)(98%100)%(%(取余取余):5%35%3的值为的值为2 2;-5%3-5%3的值为的值为-2-2;5%(-3)5%(-3)的值为的值为2 2;-5%(-3)-5%(-3)的值为的值为-2-2;两个操作数如果符号不同,结果以左操作数为准两个操作数如果符号不同,结果以左操作数为准 两个操作数只能为两个操作数只能为intint或或charchar 若若a a能被能被b b整除,则有:整除,则有:a%b=0a%b=0。整数
20、除与求余运算存在如下关系:整数除与求余运算存在如下关系:a%b=a-a/ba%b=a-a/b*b b。例如:例如:25+25+b b+a a%12.3-(-8)/%12.3-(-8)/c c*100100 第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2417 2 2、算术表达式算术表达式 用算术运算符和括符将操作数连接起来的式子。用算术运算符和括符将操作数连接起来的式子。优先级:()优先级:()*、/、%+%+、-结合性:从左至右;结合性:从左至右;表达式的值:表达式的值:数值型数值型(int(int、longlong、unsignedunsigned、double)
21、double);例如:例如:已知:已知:float a=2.0;float a=2.0;int b=6,c=3;int b=6,c=3;求解:求解:a a*b/c-1.5+a+fabs(-5)=b/c-1.5+a+fabs(-5)=?第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2418 double float long unsigned int char,short float a=2.0;float a=2.0;int b=6,c=3;int b=6,c=3;a a*b/c-1.5+a+fabs(-5)b/c-1.5+a+fabs(-5)12.012.0/3/35
22、4.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语言程序设计教程2022/12/2419 1 1、6 6种关系运算符:双目:种关系运算符:双目:=!=!=2 2、关系表达式:关系表达式:用关系运算符将表达式连接起来的式子用关系运算符将表达式连接起来的式子 优先级:优先级:(=)(=)(=!=)(=!=)结合性:自左至右;结合性:自左至右;表达式的值:表达式的值:若为真,则结果为若为真,则结果为1 1;若为假,则结果为若为假,则结果为0 0。35 3
23、5 的值为的值为 0 0;32 32 的值为的值为 0 0;3+(43)3+(43)*4 4的值为的值为 3 3;3+43+43b ab=c b+cbc例如例如第2章 C语言的基本数据类型与表达式二、关系运算符和关系表达式C语言程序设计教程2022/12/2420 1 1、3 3种逻辑运算符:双目:种逻辑运算符:双目:&|&|单目:单目:!逻辑量:可以是整型、实型、字符型和指针类型,逻辑量:可以是整型、实型、字符型和指针类型,0 0假假 非非0 0真;真;如:如:0 0,0.00.0,0,NULL0,NULL都代表都代表假假。2 2、逻辑表达式:逻辑表达式:用逻辑运算符将表达式连接起来的式子用
24、逻辑运算符将表达式连接起来的式子 优先级:优先级:!&|结合性:自左至右;结合性:自左至右;表达式的值:表达式的值:若为真,则结果为若为真,则结果为1 1;若为假,则结果为若为假,则结果为0 0。第2章 C语言的基本数据类型与表达式三、逻辑运算符和逻辑表达式C语言程序设计教程2022/12/2421 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)|:只要有一个为真,结果则为真;只要有
25、一个为真,结果则为真;(a 0)(0)(a 0)(1)例如例如第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2422 !高高 算术运算符算术运算符 关系运算符关系运算符&和和|赋值运算符赋值运算符 低低 4-04-01&21&28 48 3&2|8 3&2|8 a !b|a7&(a+b+c|d+e+f)!i等价于等价于i=0 当当i=1,(i=0)=0,!i=0 当当i=0,(i=0)=1,!i=1第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2424逻辑表达式一般用于控制语句中的条件:逻辑表达式一般用于控制语句中的条件:例如:例如:(1)n(1
26、)n是小于是小于m m的偶数:的偶数:nm&n%2=0nm&n%2=0 (2)year (2)year是闰年是闰年:(能被(能被4 4整除但不能被整除但不能被100100整除或能被整除或能被400400整除)整除)year%4=0&year%100!=0|year%400=0第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2425 分析以下程序的执行结果分析以下程序的执行结果(s2-1.c)(s2-1.c)#include#include main()main()int a,b,d=241;int a,b,d=241;a=d/100%9;a=d/100%9;b=(-1)&
27、(-1);b=(-1)&(-1);printf(“%d%dn”,a,b);printf(“%d%dn”,a,b);第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2426四、四、自增与自减运算符自增与自减运算符 单目:单目:+,-有两种形式:有两种形式:+i,-i+i,-i:使用之前使:使用之前使i i的值增的值增1 1(或减(或减1 1););i+,i-i+,i-:使用之后使:使用之后使i i的值增的值增1 1(或减(或减1 1););它们的不同在于:前者先用它们的不同在于:前者先用i i值后再加值后再加1 1或减或减1 1。后。后者先加者先加1 1或减或减1 1后再用
28、后再用i i值。值。等价于等价于 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。例如:例如:(1)i+;(1)i+;+i;+i;(2)i=3;(2)i=3;j=i+;j=i+;(3)i=3;(3)i=3;j=+i;j=+i;第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2427例如:例如:设设int i=3,x;x=i+;x=?i=?x=?i=?x=+i;x=+i;x=?i=?x=?i=?(i+)+(i+)+(i+);
29、表达式的值为:表达式的值为:i?(+i)+(+i)+(+i);表达式的值为:表达式的值为:i?注意必须是左值表达式。(注意必须是左值表达式。(i+j)+是错误的是错误的。第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2428 结合性:自右至左。结合性:自右至左。如:如: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。第2章 C语言的基本数据类型与表达式 例如:设例如:设i=3i=3,j=4j=
30、4,k=i+jk=i+j,k=k=?注意注意“+”+”或或“-”-”自增与自减运算符的使用。自增与自减运算符的使用。C语言程序设计教程2022/12/2429 序列点:在序列点:在i+中,引起变量自加的计算点。中,引起变量自加的计算点。&|?:,表达式完成后表达式完成后 例如:例如:int x=0,y=1;y-x+&x;=1&1 =1 x*y-|y;=0|0 =0 自增自减与逻辑运算符的使用自增自减与逻辑运算符的使用 例如:例如:(1)a=0;b=1;(1)a=0;b=1;c=a+&(b=3);c=a+&(b=3);结果结果:a:a为为1,b1,b为为1,c1,c为为0 0。(2)a=1;b=
31、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。第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2430 综合举例:综合举例:1、设设int a=1,b=2,c,d,e;c=(-a+)+(+b);d=(b-)+(+a)-a;e=(a/(+b)-(b/(-a);?a,b,c,d,e 2、设、设int a=2,b=3;,c,d,e,f;c=(a+=-b);d=(a=+b);e=(a-!=b);f=(+ab-);?a,b,c,d,e,f第2章 C语言
32、的基本数据类型与表达式C语言程序设计教程2022/12/2431 3、设设int x=4;y=25;z=2;z=(-y/+x)*z?z 4、设、设int x=y=z=0;+x|+y&+z;+x&+y|+z;+x&+y&+z;第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2432 1 1、赋值运算符赋值运算符 单目:单目:=2 2、赋值表达式:赋值表达式:用赋值运算符将变量和表达式连接起来用赋值运算符将变量和表达式连接起来 形式形式:=求值规则求值规则:将将“=”=”右边表达式的值赋给左边的变右边表达式的值赋给左边的变量。量。优先级:优先级:!算术算术 关系关系&和和|赋
33、值赋值 结合性:自右至左;结合性:自右至左;表达式的值:表达式的值:被赋值变量的值被赋值变量的值。例如例如:(1)x=(y=12)/4 (1)x=(y=12)/4 y y值为值为1212,x x值为值为3 3,表达式的值为,表达式的值为3 3 (2)x=y=12/4 (2)x=y=12/4 y y值为值为3 3,x x值为值为3 3,表达式的值为,表达式的值为3 3 (3)x=(y=12/4)(3)x=(y=12/4)y y值为值为3 3,x x值为值为3 3,表达式的值为,表达式的值为3 3 (4)(x=y)=12/4 (4)(x=y)=12/4 两个操作数类型可以不同,但执行赋值前右操作数
34、被自动转化为左两个操作数类型可以不同,但执行赋值前右操作数被自动转化为左操作数的类型。右操作数可以是一个表达式。如果表达式是一个赋操作数的类型。右操作数可以是一个表达式。如果表达式是一个赋值表达式,则形成多重表达式。如,值表达式,则形成多重表达式。如,i=j=x=y=5i=j=x=y=5;第2章 C语言的基本数据类型与表达式五、赋值运算符和赋值表达式C语言程序设计教程2022/12/2433 3 3、复合赋值运算符(双目)复合赋值运算符(双目)*=、/=/=、%=%=、+=+=、-=,=-=,=,&=,&=、=、=注意注意:复合运算符是一个运算符复合运算符是一个运算符,但功能上但功能上,是两个
35、运算符功是两个运算符功能的组合。能的组合。例如例如:(1)a+=b (1)a+=b 相当于相当于 a=a+ba=a+b a a*=b =b 相当于相当于 a=aa=a*b b a a*=b+c=b+c 相当于相当于 a=aa=a*(b+c)(b+c)而不是而不是 a=aa=a*b+cb+c (2)(2)设设a=12a=12,计算表达式,计算表达式a+=a-=aa+=a-=a*1212和和a+=a-=aa+=a-=a*=12=12 的值的值第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2434例,分析以下程序的运行结果。(例,分析以下程序的运行结果。(s1-4.c)mai
36、n()int a,b,c,d;a=b=c=5;c+=a+b;d=c%a;第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2435 综合练习:综合练习:设设int a=12,n=5;a+=a-=a*=a;a%=(n%=2););设设int x3,y;x*=y=x+;第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2436 1 1、条件运算符条件运算符?和和:,它们与三个操作数组组成三元运算。它们与三个操作数组组成三元运算。形式为形式为:?:3 求值规则和表达式的值求值规则和表达式的值:真真(非非0),0),求解表达式求解表达式2 2 求解表达式求解表达
37、式1 1 条件表达式的值条件表达式的值 假假(0),(0),求解表达式求解表达式3 3例如例如:int max,int max,a=5;b=3;a=5;b=3;max=ab?a:b max max=ab?a:b max及赋值表达式的值均为及赋值表达式的值均为5;5;ab?a:b+1 a 条件条件 赋值赋值 第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2438 结合性:自右至左;结合性:自右至左;y=x10?x/10:x0?x:-xy=x10?x/10:x0?x:-x;等价于等价于:y=x10?x/10:(x10?x/10:(x0?x:-x);当当x x的值为的值为15
38、15时,表达式的结果为:时,表达式的结果为:1 1 当当x x的值为的值为5 5时,表达式的结果为:时,表达式的结果为:-5-5第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2439 综合举例:综合举例:int x=1,y=2,z=3,a;x+=y+=z;a=xy?y:x;a=xy?x+:y+;思考思考:z+=xy+?x+:y+;int x=3;y=4,z=4;(z=yx)?1:0;int a=5,c=4;(-a=c+)?a?+c;第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2440 分析以下程序的执行结果分析以下程序的执行结果(s2-2.c)
39、#includemain()int i=16,j,x=6,y,z;j=i+1;printf(“1:%dn”,j);x*=i=j;printf(“2:%dn”,x);x=1;y=2;z=3;x+=y+=z;printf(“3:%dn”,z+=xy?x+:y+);x=y=z=-1;+x|+y&+z;printf(“5:%d,%d,%dn”,x,y,z);第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/24412 2、逗号运算符:逗号运算符:单目:单目:,形式形式:逗号表达式逗号表达式1 1,逗号表达式,逗号表达式2 2,逗号表达式,逗号表达式n n 求值规则求值规则:从左至右
40、依次计算各表达式的值从左至右依次计算各表达式的值;优先级:优先级:最低;最低;结合性:自左至右;结合性:自左至右;表达式的值:最后一个表达式的值。表达式的值:最后一个表达式的值。如,如,a=3a=3,6 6*a a;结果为结果为1818,但,但a a的值为的值为3 3一个逗号表达式又可以与另一个表达式组成一个新的逗一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式。号表达式。如,如,(a=3(a=3*5,a5,a*4),a+5;4),a+5;值为值为2020第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2442例如:例如:a b y a b y 表达式表达式 y=
41、a=4,b=5,a+b;4 5 4 9y=a=4,b=5,a+b;4 5 4 9 y=(a=4,b=5,a+b);4 5 9 9 y=(a=4,b=5,a+b);4 5 9 9 y=(a=4,b=5),a+b;4 5 5 9 y=(a=4,b=5),a+b;4 5 5 9 y=a=(4,b=5),a+b;5 5 5 10 y=a=(4,b=5),a+b;5 5 5 10注意注意:C C语言常用逗号作为分隔符语言常用逗号作为分隔符,例如例如:int a=3,b=4,c=5;int a=3,b=4,c=5;printf(“%d,%d,%d”,(a,b,c);printf(“%d,%d,%d”,(a
42、,b,c);printf(“%d,%d,%d”,a,(a,b,c),c);printf(“%d,%d,%d”,a,(a,b,c),c);结果为结果为3 3,5 5,5 5第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2443 形式有两种:形式有两种:sizeof 变量名变量名 sizeof(类型名类型名)结果为整型数。结果为整型数。int a int a;float xfloat x;printf(“%d,%d”,sizeof a,sizeof x);printf(“%d,%d”,sizeof a,sizeof x);printf(“%d,%d”,sizeof(int)
43、,sizeof(float);printf(“%d,%d”,sizeof(int),sizeof(float);以上两个以上两个printfprintf语句结果均为语句结果均为2 2,4 4。例如例如第2章 C语言的基本数据类型与表达式3 3、求求字节运算符:字节运算符:sizeof 作用:求得变量或某种数据类型所需的字节数。作用:求得变量或某种数据类型所需的字节数。C语言程序设计教程2022/12/2444 分析程序执行结果分析程序执行结果(s2-3.c)#include main()int a=1;char c=a;float f=2.0;printf(“%dn”,(a+2,c+2);pr
44、intf(“%dn”,(a=c);printf(“%dn”,(!(a=0),f!=0&c=A);printf(“%dn”,(a0?0:1),(ab ab 截断高截断高a-ba-b位,送低位,送低b b 位;位;有符号数据有符号数据 有符号变量:符号扩展;有符号变量:符号扩展;其他情况:高其他情况:高a-ba-b位全补位全补0 0。符号扩展:符号扩展:符号位为符号位为0 0,剩余的高位补,剩余的高位补0 0;符号位为符号位为1 1,剩余的高位补,剩余的高位补1 1。ababfloat f=23;23.00000 f(7位)位)double f=A;23.0000000000000 f(15位)位
45、)第2章 C语言的基本数据类型与表达式C语言程序设计教程2022/12/2448 三、强制类型转换 形式:形式:(类型名类型名)表达式表达式 强制类型转换时强制类型转换时,得到所需类型的中间变量,原来变得到所需类型的中间变量,原来变 量的类型不会改变。量的类型不会改变。例如:例如:int a=2,b=5;int a=2,b=5;float x=4.4;float x=4.4;则有:则有:表达式表达式 结果结果 b/a 2b/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)第2章 C语言的基本数据类型与表达式
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。