《C语言程序设计实用教程》课件第2章 顺序结构程序设计.ppt

上传人(卖家):momomo 文档编号:5787151 上传时间:2023-05-09 格式:PPT 页数:166 大小:2.42MB
下载 相关 举报
《C语言程序设计实用教程》课件第2章 顺序结构程序设计.ppt_第1页
第1页 / 共166页
《C语言程序设计实用教程》课件第2章 顺序结构程序设计.ppt_第2页
第2页 / 共166页
《C语言程序设计实用教程》课件第2章 顺序结构程序设计.ppt_第3页
第3页 / 共166页
《C语言程序设计实用教程》课件第2章 顺序结构程序设计.ppt_第4页
第4页 / 共166页
《C语言程序设计实用教程》课件第2章 顺序结构程序设计.ppt_第5页
第5页 / 共166页
点击查看更多>>
资源描述

1、2.1 C程序结构程序结构2.2 数据的机内表示和存储数据的机内表示和存储2.3 数据类型数据类型2.4 常量常量2.5 变量变量2.6 操作数存储空间的大小操作数存储空间的大小sizeof2.7 常变量与符号常量常变量与符号常量2.8 算术运算符与算术表达式算术运算符与算术表达式2.9 赋值运算符与赋值表达式赋值运算符与赋值表达式2.10 逗号运算与逗号表达式逗号运算与逗号表达式2.11 运算符的优先级与结合性运算符的优先级与结合性2.13 语句和块语句和块2.14 指针与指针变量指针与指针变量2.15 数据的输入与输出数据的输入与输出2.16 顺序结构程序设计综合举例顺序结构程序设计综合举

2、例n举例介绍举例介绍C语言的程序结构。语言的程序结构。n例例2-1 从键盘输入半径,求圆的周长和面从键盘输入半径,求圆的周长和面积。积。2.1 C程序结构程序结构算法算法思路思路:从键盘输入半径送给从键盘输入半径送给 redius 计算周长计算周长:perimeter=2*redius*PI;计算面积:计算面积:area=PI*redius*redius,输出输出perimeter和和area的值的值#include double PI=3.14;void main()int redius;double perimeter,area;printf(“Input a redius:”);scan

3、f(%d,&redius);perimeter=2*redius*PI;area=PI*redius*redius;printf(The perimeter is%.2f,The area is%.2fn,perimeter,area);声明变量redius提示输入输入数据赋给redius计算周长和面积输出结果预处理命令全局变量声明函数定义C源程序由三个要素组成源程序由三个要素组成:(1)预处理命令预处理命令。C编译程序对源程序编译前,先由预编译程序对源程序编译前,先由预处理器对预处理命令进行预处理。处理器对预处理命令进行预处理。(2)全局声明全局声明。包括全局变量声明和函数原型声明。包括全局

4、变量声明和函数原型声明。(3)函数定义函数定义。一个。一个C语言程序由一个或多个函数组成语言程序由一个或多个函数组成的的,其中只能有一个其中只能有一个main函数。函数。函数由一组语句组成。函数由一组语句组成。比语句更小的语法单位:表达式、变量、常量和关比语句更小的语法单位:表达式、变量、常量和关键字等。键字等。2.1 C程序结构程序结构n大小写的英文字母:大小写的英文字母:A A Z Z,a a z zn数字字符:数字字符:0 0 9 9n特殊字符:特殊字符:空格空格!%&_ _(下划线下划线)+*=-/“;.,()2.1.1 C字符集字符集2.1.2 词法记号词法记号n关键字关键字:C:C

5、语言预定义的单词语言预定义的单词n标识符标识符:标识符是编程人员自己定义的单词。标识符是编程人员自己定义的单词。用以用以命名程序正文中的一些实体。命名程序正文中的一些实体。如如:变量名、常量名、函数名变量名、常量名、函数名n文文 字字:文字是在程序中直接使用符号表示的数据文字是在程序中直接使用符号表示的数据.包括包括:数字、字符、字符串等数字、字符、字符串等 如如:123:123,4.564.56,A A,”HelloHello”n操作符操作符:用于各种运算的符号,如:用于各种运算的符号,如:+,-,*,n分隔符分隔符:用于分隔各个词法记号或程序正文用于分隔各个词法记号或程序正文.如:(如:(

6、),:;n空白符空白符:用于指示单词的开始和结束位置。用于指示单词的开始和结束位置。如:空格(如:空格(spacespace)、制表符()、制表符(TABTAB键产生的字符)、键产生的字符)、换行符(换行符(Enter Enter 键所产生的字符)和注释。键所产生的字符)和注释。auto break case char continue const default double do else float for if int long NULL return switch shortsigned true this unsigned void whilen关键字关键字:keywords是是C

7、语言预定义的单词,语言预定义的单词,又称保留字又称保留字(reserved words)。这些单词在程。这些单词在程序中具有不同的使用目的。序中具有不同的使用目的。2.1.2 词法记号词法记号标识符标识符(identifier)标识符的构成规则标识符的构成规则:以字母、下划线以字母、下划线(_)开始开始 以大写字母、小写字母、下划线以大写字母、小写字母、下划线(_)或数字或数字09组成。组成。不能是不能是c的关键字。的关键字。大写字母和小写字母代表不同的标识符。大写字母和小写字母代表不同的标识符。标识符的长度是任意的标识符的长度是任意的 identifier,userName,User_Nam

8、e,identifier,userName,User_Name,_sys_value,change,_sys_value,change,2mail,room#,int2mail,room#,int合法的标识符非法的标识符标识符作用标识符作用:用于标记程序代码中的名字用于标记程序代码中的名字:变量名、常量变量名、常量名、函数名等。名、函数名等。2.2 数据的机内表示和存储数据的机内表示和存储2.2.1 二进制、八进制、十六进制2.2.2 原码和反码2.2.3 补码-有符号整数的机内表示形式2.2.4 浮点数的机内表示形式2.2.1 二进制、八进制、十六进制二进制、八进制、十六进制1.二进制、八进

9、制和十六进制二进制、八进制和十六进制n数据在计算机内部都是以数据在计算机内部都是以二进制形式二进制形式存储的存储的n常用的进制常用的进制:n十进制十进制n二进制二进制n八进制八进制n十六进制十六进制 n十进制:十进制:基数基数:10,十个数字:,十个数字:09,逢,逢10进进1 n二进制:二进制:基数基数2,两个数字:,两个数字:0和和1,每位的权是,每位的权是以以 2为底的幂。为底的幂。102210写成二进位制成为写成二进位制成为11 1111 111022.2.1 二进制、八进制、十六进制二进制、八进制、十六进制2.2.1 二进制、八进制、十六进制二进制、八进制、十六进制102210=11

10、 1111 11102 =17768 =3fe161 111 111 110 三位一组三位一组11 1111 1110 四四位一组位一组2.2.1 二进制、八进制、十六进制二进制、八进制、十六进制102510=?2=?16 =?8思考:思考:2.2.1 二进制、八进制、十六进制二进制、八进制、十六进制2.进制之间的转换进制之间的转换n十进制转换成十进制转换成R进制(进制(R为二、八、十六)为二、八、十六),采用采用除除R取余法。取余法。n十进制数转换为二进制:十进制数转换为二进制:除除2取余法取余法4110=1010012 2.2.1 二进制、八进制、十六进制二进制、八进制、十六进制3.数据的

11、存储度量单位数据的存储度量单位8 bit=1 Byte 字节 1024 B=1 KB(KiloByte)1024 KB=1 MB(MegaByte)兆字节1024 MB=1 GB(GigaByte)吉字节1024 GB=1 TB(TeraByte)太字节1024 TB=1 PB(PetaByte)拍字节1024 PB=1 EB(ExaByte)艾字节1024 EB=1 ZB(ZetaByte)皆字节1024 ZB=1 YB(YottaByte)佑字节1024 YB=1 BB(Brontobyte)珀字节1024 BB=1 NB(NonaByte)诺字节1024 NB=1 DB(DoggaByt

12、e)刀字节2.2.1 二进制、八进制、十六进制二进制、八进制、十六进制2.2 原码、反码和补码原码、反码和补码n原码:符号位原码:符号位+二进制数二进制数 25原原 =+00011001 -25原原=-00011001n反码:对二进制数的每一位求反反码:对二进制数的每一位求反 11001011反反=001101002.2.3 补码补码-有符号整数的机内表示形式有符号整数的机内表示形式1.1.求补码的方法求补码的方法1 1n用用1Byte表示表示的机器数据的补码:的机器数据的补码:XX补补 =X =X 当当 X X 0 2 28 8-|X|-|X|当当 X0 X3 int a=23;变量变量a

13、a的值为的值为false false,通常表示,通常表示0 0 2.5 变量变量 variablen变量变量:在程序的运行过程中数值可变的数据在程序的运行过程中数值可变的数据,用来记录运算中间结果或保存数据。用来记录运算中间结果或保存数据。n2.5.1 变量的声明变量的声明数据类型 变量名1,变量名2,变量名n;short,int,long,short,int,long,float,double,char,unsignedfloat,double,char,unsigned 复合类型复合类型例如:int a;float r,area;r=4.5;area=3.14159*r*r;2.5 变量变

14、量 variablen变量变量:在程序的运行过程中数值可变的数据在程序的运行过程中数值可变的数据,用来记录运算中间结果或保存数据。用来记录运算中间结果或保存数据。n2.5.1 变量的声明变量的声明n2.5.2 变量的初始化变量的初始化2.5 变量变量 variablen2.5.1 变量的声明变量的声明数据类型 变量名1,变量名2,变量名n;short,int,long,short,int,long,float,double,char,unsignedfloat,double,char,unsigned 复合类型复合类型例如:int a;float r,area;r=4.5;area=3.141

15、59*r*r;2.5 变量变量 variablen变量变量与与内存空间分配:内存空间分配:编译时,对变量编译时,对变量声明语声明语句将根据其类型分配存储空间。句将根据其类型分配存储空间。n变量的名对应着空间的地址,变量的值对应着变量的名对应着空间的地址,变量的值对应着空间的内容。空间的内容。例如:例如:int num,total;double d1;给变量分配 空间 num:(2000)total:(3000)d1:(4000)4字节8字节4字节基本类型与变量的分配空间基本类型与变量的分配空间(visual c+环境下)环境下)数据类型数据类型关键字关键字占用位数占用位数短整型短整型short

16、short1616整型整型intint3232长整型长整型longlong3232浮点型浮点型floatfloat3232双精度浮点型双精度浮点型doubledouble6464字符型字符型charchar8 82.5.1 变量的声明变量的声明例如:例如:short s;/给给s变量分配两个字节,占用变量分配两个字节,占用2000-2001单元单元 s=0 x1234;图图2-1 变量与内存单元的映射关系变量与内存单元的映射关系2.5.1 变量的声明变量的声明 例如:int num;num=1;num=2;n通过赋值语句改变变量的值通过赋值语句改变变量的值num:1t1 时刻时刻num:2t2

17、 时刻时刻2.5.1 变量的声明变量的声明例如:int num,total;double d1;给变量分配 空间num:total:d1:n变量遵照变量遵照 “先声明后使用先声明后使用”原则原则num=5;total=2*num;d1=-234.45;num=6;K=90;Num=J+90+num;510-234.456变量名变量名和和变量值变量值的概念的概念2.5.1 变量的声明变量的声明1.整型变量与整型类型整型变量与整型类型nshort、int和和long:都有符号类型,:都有符号类型,n整型类型前可整型类型前可加加signed和和unsigned修饰。修饰。nsigned(默认):有符

18、号型默认):有符号型nunsigned:无符号型:无符号型2.5.1 变量的声明变量的声明扩充的整型类型:扩充的整型类型:n有符号基本整型有符号基本整型 signed int;n无符号基本整型无符号基本整型 unsigned int;n有符号短整型有符号短整型 signed short int;n无符号短整型无符号短整型 unsigned short int;n有符号长整型有符号长整型 signed long int;n无符号长整型无符号长整型 unsigned long int;n长长整型长长整型 long long int1.整型变量与整型类型整型变量与整型类型2.5.1 变量的声明变量的

19、声明Signed与与unsigned的区别的区别n有符号数在计算机内以二进制补码形式存储的。有符号数在计算机内以二进制补码形式存储的。最高位表示符号位最高位表示符号位(0为正数,为正数,1为负数为负数);n无符号型在机内只能存放正数,最高位用来表无符号型在机内只能存放正数,最高位用来表示数值示数值n当数据占用同样内存位数时,无符号型数值范当数据占用同样内存位数时,无符号型数值范围比有符号数扩大一倍。围比有符号数扩大一倍。例如:例如:short:-2-15215-1unsigned short:0216-1例例2-2 整型变量声明和整型数据的使用整型变量声明和整型数据的使用#include in

20、t main()int a,b;long l;short c,d;unsigned short u,v;a=32767;b=a+1;printf(int a=%d,c=a+1=%dn,a,b);c=0 x7fff;d=c+1;printf(short c=%d,d=c+1=%d n,c,d,u);u=0 xffff;v=u+1;printf(unsigned u=%d,v=u+1=%d n,u,v);l=0 x10000;printf(long l=%dn,l);2.浮点型变量与浮点类型浮点型变量与浮点类型n浮点类型浮点类型:float(32位位)与与double(64位位)n浮点型由实数符号

21、位、小数部分和指数部分组浮点型由实数符号位、小数部分和指数部分组成的二进制串成的二进制串n计算机对一个机内二进制串的解释,按照整型去解计算机对一个机内二进制串的解释,按照整型去解释和按照浮点型去解释,会得到两种截然不同的结释和按照浮点型去解释,会得到两种截然不同的结果。果。n使用变量时要注意数据和变量的类型要一致,使用变量时要注意数据和变量的类型要一致,包括数据的输入输出语句中的格式描述符。包括数据的输入输出语句中的格式描述符。2.5.1 变量的声明变量的声明1bit8bits23bits例例2-3 从键盘输入两个数据分别赋给从键盘输入两个数据分别赋给float型和型和double型变量,显示

22、相加输出结果。型变量,显示相加输出结果。#include int main()float f;double d;scanf(%f%lf,&f,&d);printf(f=%f,d=%f,f+d=%en,f,d,f+d);3.字符型变量与字符类型字符型变量与字符类型nchar型变量,取值为单个字符,编译时分配一个字节型变量,取值为单个字符,编译时分配一个字节空间空间nchar型为有符号类型:取值范围型为有符号类型:取值范围-128127 例如:例如:char c;c=a+1;/c=97+1=98nunsigned char:取值范围:取值范围0255例如:例如:unsigned char ch1,

23、ch2;ch1=255;ch3=256;/ch3=0 2.5.1 变量的声明变量的声明3.字符型变量与字符类型字符型变量与字符类型例例2-4 字符变量的声明、赋值,并输出字符和对应字符变量的声明、赋值,并输出字符和对应的的ASCII值。值。#include int main()char c1,c2,c3;c1=a+3;c2=97+4;c3=c1-32;printf(c1=%c,ASCII=%d;c2=%c,ASCII=%d;c3=%c,ASCII=%dn,c1,c1,c2,c2,c3,c3);2.5.1 变量的声明变量的声明c1=d,ASCII=100;c2=e,ASCII=101;c3=D,

24、ASCII=68c1=d,ASCII=100;c2=e,ASCII=101;c3=D,ASCII=68n变量的初始化变量的初始化:声明变量的同时指定变量初值声明变量的同时指定变量初值 数据类型数据类型 变量名变量名=初始值初始值;初始值:初始值:常量或常量组成的表达式,不含有变量。常量或常量组成的表达式,不含有变量。例如例如:char c=a+1,b;:char c=a+1,b;double d1,d2=0.0 double d1,d2=0.0;int flag=1;int flag=1;double a;double a;double d=a;/error double d=a;/error

25、2.5.2 变量的初始化变量的初始化nsizeof运算符运算符:返回操作数存储空间返回操作数存储空间的大小的大小nsizeof一般使用形式:一般使用形式:sizeof(type)或或sizeof(var_name)2.6 sizeof 运算符运算符 例例2-5 Window环境下编译器给出了基环境下编译器给出了基本类型的存储空间的大小。本类型的存储空间的大小。2.6 sizeof 运算符运算符#include void main()int a=25;long b=4;printf(sizeof(int)=%d,sizeof(long)=%dn“,sizeof(a),sizeof(b);prin

26、tf(sizeof(short)=%d,sizeof(char)=%dn“,sizeof(short),sizeof(char);printf(sizeof(float)=%d,sizeof(double)=%dn,sizeof(float),sizeof(double);n符号常量符号常量:为常量起一个名字为常量起一个名字1.符号常量符号常量声明格式声明格式:constconst 数据类型数据类型 常量名常量名=缺省值;缺省值;注意,符号常量声明时一定要赋初值,而在程序的中间不能改变其值注意,符号常量声明时一定要赋初值,而在程序的中间不能改变其值 例如例如:constconst double

27、 double PI=PI=3.143.14;PI=3.1415 /错误2.7 常变量与符号常量常变量与符号常量area=PI*2*r;area=3.14*2*r;编译替换2.7 常变量与符号常量常变量与符号常量2.预编预编译指令声明符号常量译指令声明符号常量:#define#define 符号常量符号常量 文字文字例如:#define PI 3.14等同:constconst double double PI=PI=3.143.14;n例例2-6 常量与变量的声明、初始化及使常量与变量的声明、初始化及使用。用。#include int main()const int PRICE=030;/声

28、明整型常量 short sVar=0 x20;unsigned int iVar=100;/声明无符号整型变量并赋初值 long lVar=1234l;/声明长整型变量并赋值 float fVar=331.45f;/将单精度浮点型数赋给fVar double dVar=8.44e+11;/将双精度浮点型数赋给dVar char cVar=w;int boolVar1=6 7;/将条件表达式的判断结果false赋给整型变量 int boolVar2=6 5;/将条件表达式的判断结果true赋给整型变量 printf(constant PRICE=%dn,PRICE);printf(svar=%d

29、n,sVar);printf(ivar=%dn,iVar);printf(fvar=%fn,fVar);/以小数形式输出浮点数值 printf(dvar=%en,dVar);/以指数形式输出浮点数值 printf(cvar=%cn,cVar);/输出字符型数据 printf(boolVar1=%dn,boolVar1);/输出 1代表true printf(boolVar2=%dn,boolVar2);/输出0代表false printf(%sn,I am a student);/输出字符串 return 0;n表达式表达式:由运算符、操作数由运算符、操作数(常量、变量、函数调常量、变量、函数

30、调用用)和园括号组成的式子。和园括号组成的式子。n表达式的书写形式表达式的书写形式:n中缀式中缀式:a:a+b bn后缀式后缀式:ab:ab+n前缀式前缀式:+abab例如例如:int a=int a=1 1;c=;c=(-a(-a*b+c+6)b+c+6)*5 5;int b=int b=3 3;int c=int c=0 0;2.8 算术运算符与算术表达式算术运算符与算术表达式n运算符运算符:指明对操作数的运算方式指明对操作数的运算方式 n按操作数的个数分按操作数的个数分:单目运算符单目运算符(如如-a)-a),双目,双目运算符运算符(如如a+b)a+b)和三目运算符和三目运算符(如如e1

31、?e2:e3)e1?e2:e3)n按功能分按功能分:n算术运算符:算术运算符:+,*,/,%,+,n关系运算符:关系运算符:,=,n赋值运算符:赋值运算符:=,+=,=,*=,/=等。等。n条件运算符:条件运算符:?:n其它:其它:,sizeOf,()等。等。2.3 算术运算符与算术表达式算术运算符与算术表达式1.算术运算符算术运算符:+:正号运算符正号运算符(单目运算符单目运算符)-:负号运算符负号运算符(单目运算符单目运算符)*:乘法运算符乘法运算符/:除法运算符除法运算符%:求余运算符求余运算符+:加法运算符加法运算符-:减法运算符减法运算符2.8 算术运算符与算术表达式算术运算符与算术

32、表达式2.8 算术运算符与算术表达式算术运算符与算术表达式表表2-7 双目算术运算符双目算术运算符运算符运算符运算运算例子例子功能功能+加a+b求a与b相加的和-减a-b求a与b相减的差*乘a*b求a与b相乘的积/除a/b求a除以b的商%取余 a%b求a除以b所得的余数(1)双目运算符双目运算符2.8 算术运算符与算术表达式算术运算符与算术表达式n除法除法“/”:n整除:两个整数相除的结果为整数整除:两个整数相除的结果为整数 如如 5/4=n实除:当被除数和除数至少有一浮点型实除:当被除数和除数至少有一浮点型时,结果是实数时,结果是实数 如如 5/4.0=1.25 float a=5;a/4=

33、1.252.8 算术运算符与算术表达式算术运算符与算术表达式n求余求余(求模)求模)%n只有整型只有整型(int,long,short,char)的数据的数据才能够进行取余运算,才能够进行取余运算,float和和double不能取不能取余。余。n求余结果的符号位同被除数求余结果的符号位同被除数。如如 8%3=2 -8%16=-8 2.8 算术运算符与算术表达式算术运算符与算术表达式 例如例如:2/4=0:2/4=0 2.0/4=0.5 2.0/4=0.5 13%5=3 13%5=3 23.6%12 /Error23.6%12 /Error2.8 算术运算符与算术表达式算术运算符与算术表达式(2

34、)单目运算符单目运算符n求负求负(-)、自增自增1(+)和和自减自减1(-)n前缀运算符:前缀运算符:自增自增(减减)1 1运算符的位置在操作数的前面。运算符的位置在操作数的前面。如如 +a -a+a -an后缀运算符:后缀运算符:自增自增(减减)1 1运算符的位置在操作数的后面。运算符的位置在操作数的后面。如如 a-a+a-a+表表2-7 单目算术运算符单目算术运算符运算符运算符运算运算例子例子功能功能+自增1a+或+aa=a+1-自减1a-或-aa=a-1-求负数-aa=-a2.8 算术运算符与算术表达式算术运算符与算术表达式自增自增1 1、自减、自减1 1运算符运算符:n自增和自减自增和

35、自减运算运算的操作对象是的操作对象是变量变量n前缀前缀增增1 1(减减1 1)和后缀和后缀增增1 1(减减1 1)单独作为一条语单独作为一条语句时,表达的功能是一样的句时,表达的功能是一样的 如:如:+a;变量变量a的值加的值加1 a+;-a;变量变量a的值减的值减1 a-;n当单目运算符位于一个复杂表达式中,前缀运算和当单目运算符位于一个复杂表达式中,前缀运算和后缀运算是有区别的。后缀运算是有区别的。前缀和后缀运算符举例前缀和后缀运算符举例 x=1;x=1;前缀前缀(+,-):先将前缀运算的变量加(减)先将前缀运算的变量加(减)1 1,用加(减),用加(减)1 1后的变量值参加表达式的计算。

36、后的变量值参加表达式的计算。后缀后缀(+,(+,-):用未加(减)用未加(减)1 1的变量值参加表达式的计的变量值参加表达式的计算,然后再将变量的值算,然后再将变量的值1 。int y=(+x)int y=(+x)*3;/x 3;/x 为为2,y2,y为为6 6int y=(x+)*3;/x 为2,y为32.8 算术运算符与算术表达式算术运算符与算术表达式替换成替换成void main()int a=25;int b=4;float c=24.0;float d=5.0;printf(a=%d,b=%dn,a,b);/表达式的值是整型,对应输出格式表达式的值是整型,对应输出格式%d print

37、f(-a=%d,b+=%dn,-a,b+);/输出减输出减1后后a的值的值24,输出减,输出减1前前b值值4printf(b=%dn,b);/b的值为的值为5printf(a%b=%dn,a%b);/要输出字符要输出字符%,必须写成,必须写成%printf(6+a/5*b=%dn,6+a/5*b);printf(6+c/5*d=%.2fn,6+c/5*d);/表达式的值是浮点型,对应输出格式表达式的值是浮点型,对应输出格式%f例例2-8 算术运算符的应用算术运算符的应用。2.9 赋值运算符与赋值表达式赋值运算符与赋值表达式 赋值运算符(赋值运算符(=、+=+=、-=-=、*=等等)赋值表达式赋

38、值表达式:带有赋值运算符的表达式。带有赋值运算符的表达式。Var=expressionVar=expression 赋值表达式的含义赋值表达式的含义:将等号右边表达式的值赋给等号左边的变量。将等号右边表达式的值赋给等号左边的变量。赋值表达式值的类型为等号左边变量的类型,赋值表达式值的类型为等号左边变量的类型,赋值赋值运算符的结合性为自右向左。运算符的结合性为自右向左。例如,例如,int i;int i;i=5;/赋值表达式赋值表达式的值是的值是5,类型为类型为int2.9 赋值运算符与赋值表达式赋值运算符与赋值表达式i=1;/i=1;/表达式值为表达式值为1 1 i=j=k=1;/i=j=k=

39、1;/表达式值为表达式值为1 1,i,j,ki,j,k的值为的值为1 1i=2+(j=4);/i=2+(j=4);/表达式值为表达式值为6 6,j j的值为的值为4 4,i i的值为的值为6 6。i=(j=10)i=(j=10)*(k=2);(k=2);/表达式值为表达式值为2020,j j的值为的值为1010,k k的值为的值为2 2,i i的值为的值为2020。n赋值运算符结合性赋值运算符结合性:自右向左。自右向左。2.9 赋值运算符与赋值表达式赋值运算符与赋值表达式n复合赋值运算符的使用格式复合赋值运算符的使用格式:=n 复合赋值运算符使用格式:复合赋值运算符使用格式:var =expr

40、ession;等价于等价于 var=var expression;表表 2-8 2-8 复合赋值运算符复合赋值运算符 运算符运算符例子例子等价于等价于+=x+=ax=x+a-=x-=ax=x-a*=x*=ax=x*a/=x/=ax=x/a%=x%=ax=x%a&=x&=ax=x&a|=x|=ax=x|a=x=ax=x a=x=ax=x=x=ax=x a2.9 赋值运算符与赋值表达式赋值运算符与赋值表达式例:例:a+=3;等价于等价于 a=a+3;x*=y+8;等价于等价于 x=x*(y+8);2.9 赋值运算符与赋值表达式赋值运算符与赋值表达式n注意:注意:“=”与与“=”的区别的区别 例如:

41、例如:int a=0;条件表达式条件表达式“a=0”的结果是的结果是true即即1;赋值表达式赋值表达式”a=0”的结果是的结果是0 因为赋值表达式执行后因为赋值表达式执行后a变量的值变为变量的值变为0,整个赋值表达,整个赋值表达式的结果是式的结果是a的值的值0。2.9 赋值运算符与赋值表达式赋值运算符与赋值表达式n 注意:注意:“a=b”与与“b=a”的区别的区别例如:例如:int a=1,b=2;a=b;/a 为为 2,b 为为 2b=a;/b 为为 1,a 为为 1替换为2.9 赋值运算符与赋值表达式赋值运算符与赋值表达式n赋值过程中的类型转换赋值过程中的类型转换n两侧类型一致两侧类型一

42、致时时,直接赋值,直接赋值n两侧类型不一致,两侧类型不一致,自动将右侧的自动将右侧的类型转换类型转换为为左侧类型后赋值左侧类型后赋值n定义变量时要防止数据溢出定义变量时要防止数据溢出例如:例如:unsigned char ch;ch=255+2;/语句执行后语句执行后ch的值为的值为1。double d=12.34;int i;i=d;/语句执行后语句执行后i的值为的值为12。2.10 逗号运算与逗号表达式逗号运算与逗号表达式n逗号是一个运算符,逗号表达式的格式:逗号是一个运算符,逗号表达式的格式:表达式表达式1,表达式,表达式2,表达式表达式mn求解次序:求解次序:n第一第一,求表达式求表达

43、式1的值的值;n第二第二,求表达式求表达式2的值的值;n最后最后,求表达式求表达式m的值的值;n整个逗号表达式的最终结果是整个逗号表达式的最终结果是表达式表达式m的值。的值。例如:例如:int a=1 a=(5,a+2);/a的值为的值为32.10 逗号运算与逗号表达式逗号运算与逗号表达式例如:例如:int a=1;a=5,a+2;/a的值为的值为5。逗号分隔的两个表达式分别是逗号分隔的两个表达式分别是a=5和和a+2。2.10 逗号运算与逗号表达式逗号运算与逗号表达式例如:例如:char a=0;int b=10;printf(“%d”,(a+a,a+b,b);/打印结果为打印结果为10。例

44、如:例如:int b=1;b+=(+b)+(b+);/b的值为的值为7。因为先计算因为先计算(+b)值为值为2,b=2;再计算;再计算(b+)值为值为2;2+2;b加加1为为3;最后计算最后计算b+=4,则,则b=7。表达式的计算次序:从左向右扫描整个表达式,表达式的计算次序:从左向右扫描整个表达式,按照运算符的优先级和结合性计算按照运算符的优先级和结合性计算nint b=1;nb+=(+b)+(b+);nb+=2 +(b+);nb+=2 +2;nb+=4;nb=7 ;b=2b=3n表达式的运算次序表达式的运算次序:取决于表达式中各种运取决于表达式中各种运算符的优先级。算符的优先级。n优先级高

45、的运算符先运算优先级高的运算符先运算,优先级低的运算符后优先级低的运算符后运算。运算。n运算符的结合性运算符的结合性:决定了并列的同级运算符的先决定了并列的同级运算符的先后执行顺序。后执行顺序。n语言规定了运算符的优先级语言规定了运算符的优先级和和结合性结合性n使用圆括号可以提高括在其中的运算的优先级。使用圆括号可以提高括在其中的运算的优先级。2.11 运算符的优先级与结合性运算符的优先级与结合性表表2-9 运算符的优先级与结合性运算符的优先级与结合性优先级描述运算符结合性1最高优先级 ().(结构体成员运算)-(指向结构体成员运算)左右2单目运算-(负号)+-!(非)(位取反)(类型)siz

46、eof *(指针取内容运算)&(取地址运算)右左3算术乘除运算*/%左右4算术加减运算+-左右5移位运算 左右6关系运算 =左右7相等关系运算=!=左右高高底底表表2-9 运算符的优先级与结合性运算符的优先级与结合性(续)续)优先级描述运算符结合性8按位与&左右9按位异或左右10按位或|左右11逻辑与&左右12逻辑或|左右13三目条件运算?:右左14赋值运算=+=-=*=/=%=&=|=右左15逗号运算符,左右高高底底例如,表达式计算次序:例如,表达式计算次序:3*(6+2)/12 (7 5)/2*3(1):=3*8/12 2/2*3(2):=3*8/12 1*3(3):=24/12 1*3(

47、4):=2 1*3(5):=2 3(6):=-1 2.11 运算符的优先级与结合性运算符的优先级与结合性2.12 混合运算时数据类型的转换混合运算时数据类型的转换n当表达式中出现了多种类型数据的混合当表达式中出现了多种类型数据的混合运算时运算时,需要进行类型转换。需要进行类型转换。n隐含转换隐含转换(自动转换)(自动转换):从占用内存较少的短从占用内存较少的短数据类型转化成占用内存较多的长数据类型数据类型转化成占用内存较多的长数据类型时,可以不做显式的类型转换声明;时,可以不做显式的类型转换声明;n强制类型转换强制类型转换:从较长的数据类型转换成较从较长的数据类型转换成较短的数据类型时,要做强

48、制类型转换。短的数据类型时,要做强制类型转换。基本类型数据占有的内存宽度基本类型数据占有的内存宽度数据类型关键字占用位数字符型char8短整型short16整型int32长整型long32浮点型float32双精度型double64例如例如,long lVal=long lVal=10001000;int ival=200;int ival=200;lVal=lVal=ivalival;double d1=double d1=123.5f123.5f;float f1=float f1=2.142.14;/编译警告编译警告flat f2=2.15;flat f2=2.15;混合运算时数据类型的

49、转换混合运算时数据类型的转换1.1.隐含转换隐含转换(自动类型转换)的规则:(自动类型转换)的规则:char,short,int,unsigned,long,unsigned long,float,double低低 高高混合运算时数据类型的转换混合运算时数据类型的转换n强制类型转换的格式:强制类型转换的格式:(数据类型)表达式(数据类型)表达式 n通过强制类型转换,可将数据范围宽的数据转通过强制类型转换,可将数据范围宽的数据转换成范围低的数据,但这可能会导致溢出或精换成范围低的数据,但这可能会导致溢出或精度的下降。度的下降。例如:例如:(double)a (将转换成(将转换成double类型)

50、类型)(int)(x+y)(将(将x+y的值转换成的值转换成int型)型)(float)(5%2)(将(将5%3的值转换成的值转换成float型)型)float 5%2例例2-9数据类型转换的例子数据类型转换的例子void main(void)int i1,i2=0 x30;/将十六进制值将十六进制值0 x30赋给赋给i2 short sVal=017;/将八进制值将八进制值017赋给赋给sVal long lVal;char cVal;float f1=5.67f,f2;double dVal=1.23e-9;i1=f1;/*将浮点数的小数部分截断,将整数将浮点数的小数部分截断,将整数5赋给

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《C语言程序设计实用教程》课件第2章 顺序结构程序设计.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|