第3章最简单的C程序设计—顺序程序设计_第1页
第3章最简单的C程序设计—顺序程序设计_第2页
第3章最简单的C程序设计—顺序程序设计_第3页
第3章最简单的C程序设计—顺序程序设计_第4页
第3章最简单的C程序设计—顺序程序设计_第5页
已阅读5页,还剩117页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2022-6-19第3章 顺序程序设计1第第3章章 最简单的最简单的C程序设计程序设计顺序程序设计顺序程序设计王燕王燕2022-6-19第3章 顺序程序设计2主要内容主要内容3.1 顺序程序设计顺序程序设计举例举例3.2 数据数据的表现形式及其运算的表现形式及其运算3.3 C语句语句3.4 数据数据的输入输出的输入输出2022-6-19第3章 顺序程序设计3重点难点重点难点数据类型及其运算数据类型及其运算数据输入输出数据输入输出格式输入输出格式输入输出顺序结构程序设计顺序结构程序设计2022-6-19第3章 顺序程序设计43.2 数据的表现形式及其运算数据的表现形式及其运算3.2.1 常量和变

2、量常量和变量3.2.2 数据类型数据类型3.2.3 整型数据整型数据3.2.4 字符型数据字符型数据3.2.5 浮点型数据浮点型数据3.2.6 怎样确定常量的类型怎样确定常量的类型3.2.7 运算符和表达式运算符和表达式2022-6-19第3章 顺序程序设计53.2.1 常量和变量常量和变量1.常量常量:在程序运行过程中,值不能被改变的量:在程序运行过程中,值不能被改变的量整型常量:如整型常量:如1000,12345,0,-345实型常量实型常量l十进制小数形式:如十进制小数形式:如0.34 -56.79 0.0l指数形式:如指数形式:如12.34e3 (代表代表12.34 103)字符常量:

3、如字符常量:如?l转义字符:如转义字符:如n字符串常量:如字符串常量:如boy符号常量:符号常量:#define PI 3.14162022-6-19第3章 顺序程序设计63.2.1 常量和变量常量和变量例符号常量的使用例符号常量的使用 #include stdio.h#define PRICE 30void main()int num,total;num=10;PRICE=40;total=num*PRICE;printf(total=%dn,total);运行结果:运行结果:total=300说明:说明:程序中用程序中用#define命令行定义命令行定义PRICE代表代表常量常量30,此后

4、凡在本文件中出现的,此后凡在本文件中出现的PRICE都都代表代表30,可以和常量一样进行运算。,可以和常量一样进行运算。说明:说明:如再用赋值语句给如再用赋值语句给PRICE赋值是错的赋值是错的 PRICE=40;/ 错误,不能给符号常量赋值错误,不能给符号常量赋值2022-6-19第3章 顺序程序设计73.2.1 常量和变量常量和变量2. 变量变量:在程序运行期间,变量的值是可以改变的:在程序运行期间,变量的值是可以改变的变量必须先定义,后使用变量必须先定义,后使用定义变量时指定该变量的名字和类型定义变量时指定该变量的名字和类型变量名变量名和和变量值变量值是两个不同的概念是两个不同的概念变量

5、名实际上是以一个名字代表的一个变量名实际上是以一个名字代表的一个存储地址存储地址从变量中取值,实际上是通过变量名找到相应的内从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据存地址,从该存储单元中读取数据变量值变量值是存储单元中的数据是存储单元中的数据2022-6-19第3章 顺序程序设计83.2.1 常量和变量常量和变量变量的特征变量的特征(1)变量名变量名:存储空间的名字,通过它对变量进行访问。:存储空间的名字,通过它对变量进行访问。 一个标识符,通常用小写字母表示;一个标识符,通常用小写字母表示;(2)变量类型变量类型:决定存储单元的大小:决定存储单元的大小 整型

6、变量、实型变量、字符型变量等整型变量、实型变量、字符型变量等(3)变量值变量值:存储单元中存储的数值。:存储单元中存储的数值。 如如 y=x+5;其中其中x和和y都是变量,以上语句是将都是变量,以上语句是将x+5的值赋给的值赋给y2022-6-19第3章 顺序程序设计93.2.1 常量和变量常量和变量3.常变量:常变量:const int a=3;4.标识符:一个对象的名字,用来标识变量名、符号标识符:一个对象的名字,用来标识变量名、符号常量名、数组名、函数名等的有效字符序列。常量名、数组名、函数名等的有效字符序列。 C语言规定标识符只能由语言规定标识符只能由字母字母、数字数字和和下划线下划线

7、3种字种字符组成,且符组成,且第一个字符第一个字符必须为字母或下划线。必须为字母或下划线。 sum , _total, month, Student_name,lotus_1_2_3 , BASIC, li_lingM.D.John,¥123, 3D64, ab2022-6-19第3章 顺序程序设计10举例举例program to_ _to file_2 ab1_c3为合法标识符为合法标识符yes? 123go toa_80%if含有不合法字符含有不合法字符“?”出现非法字符出现非法字符“”标识符中不允许有空格标识符中不允许有空格第一个字符不能为数字第一个字符不能为数字与关键字相同与关键字相同

8、2022-6-19第3章 顺序程序设计113.2.1 常量和变量常量和变量保留字保留字:C语言规定的具有特定意义的字符串,也语言规定的具有特定意义的字符串,也称称关键字关键字。C语言的保留字(关键字)共有语言的保留字(关键字)共有37个,附录个,附录C2022-6-19第3章 顺序程序设计12变量小结变量小结要求对所有用到的变量作强制定义,也就是要求对所有用到的变量作强制定义,也就是“先先定义,后使用定义,后使用” 。标识符不能与标识符不能与C语言的保留字、系统标准库函数语言的保留字、系统标准库函数同名。同名。编译系统将大写字母和小写字母认为是两个不同编译系统将大写字母和小写字母认为是两个不同

9、的字符。的字符。 建议变量名的长度最好不要超过建议变量名的长度最好不要超过8个字符。个字符。在选择变量名和其它标识符时,应注意做到在选择变量名和其它标识符时,应注意做到“见见名知意名知意”,即选用有含意的英文单词,即选用有含意的英文单词 (或其缩(或其缩写)作标识符。写)作标识符。2022-6-19第3章 顺序程序设计133.2.2 数据类型数据类型p43 图图3.4数据类型派生类型枚举类型 enum空类型 void指针类型数组类型结构体类型 struct共用体类型 union基本类型整型 int字符型 char实型(浮点型)单精度实型float双精度实型double复数浮点型complex布

10、尔型 bool函数类型2022-6-19第3章 顺序程序设计143.2.3 整型数据整型数据1. 整型数据的分类整型数据的分类最基本的整型类型最基本的整型类型l基本整型基本整型(int型型):占:占2个或个或4个字节个字节l短整型短整型(short int):VC+6.0中占中占2个字节个字节l长整型长整型(long int):VC+6.0中占中占4个字节个字节l双长整型双长整型(long long int):C99新增的新增的2022-6-19第3章 顺序程序设计153.2.3 整型数据整型数据2. 整型变量的符号属性整型变量的符号属性整型变量的值的范围包括负数到正数整型变量的值的范围包括负

11、数到正数可以将变量定义为可以将变量定义为“无符号无符号”类型类型扩充的整型类型:扩充的整型类型:p462022-6-19第3章 顺序程序设计163.3 整型数据整型数据3.整型常量的表示方法整型常量的表示方法 整型常量即整常数。在整型常量即整常数。在C语言中,整常数可用以下语言中,整常数可用以下三种形式表示:三种形式表示:(1)十进制十进制整数。如:整数。如:123, -456(2)八进制八进制整数,以整数,以0头的数是八进制数。头的数是八进制数。 如:如:0123表示八进制数表示八进制数123,等于十进制数,等于十进制数83,-011表示八进表示八进制数制数-11,即十进制数即十进制数-9。

12、(3)十六进制十六进制整数。以整数。以0 x开头的数是开头的数是16进制数。如:进制数。如:0 x123,代表,代表16进制数进制数123,等于十进制数等于十进制数 291。 -0 x12等于十进制数等于十进制数-18。2022-6-19第3章 顺序程序设计173.3 整型数据整型数据4.整型数据在内存中的存放形式整型数据在内存中的存放形式 数据在内存中是以数据在内存中是以二进制二进制形式存放的。形式存放的。 如如: int i; /* 定义为整型变量定义为整型变量 */ i=10; /* 给给i赋以整数赋以整数10 */说明:说明:内存中存储的内存中存储的是是 000010102022-6-

13、19第3章 顺序程序设计183.3 整型数据整型数据5.整型变量的定义整型变量的定义C规定在程序中所有用到的变量都必须在程序中定规定在程序中所有用到的变量都必须在程序中定义,即义,即“强制类型定义强制类型定义”。例如例如:int a,b; (指定变量(指定变量a,b为整型)为整型)unsigned short c,d;(指定变量(指定变量c,d为无符号短整型)为无符号短整型)long e,f; (指定变量(指定变量e,f为长整型)为长整型)2022-6-19第3章 顺序程序设计193.3 整型数据整型数据例整型变量的定义与使用例整型变量的定义与使用#include void main()int

14、 a,b,c,d;unsigned u; a=12;b=-24;u=10;c=a+u;d=b+u;printf(a+u=%d,b+u=%dn,c,d);说明:说明:不同种类的整型数据可以不同种类的整型数据可以进行算术运算进行算术运算 运行结果:运行结果:a+u=22,b+u=-142022-6-19第3章 顺序程序设计203.2.4 字符型数据字符型数据1.字符与字符代码字符与字符代码大多数系统采用大多数系统采用ASCII字符集字符集字母:字母:AZ,az数字:数字:09专门符号:专门符号:29个:个:! # & ( ) *等等空格符:空格、水平制表符、换行等空格符:空格、水平制表符、换行等不

15、能显示的字符:空不能显示的字符:空(null)字符字符(以以0表示表示)、警、警告告(以以a表示表示)、退格、退格(以以b表示表示)、回车、回车(以以r表表示示)等等2022-6-19第3章 顺序程序设计213.2.4 字符型数据字符型数据字符字符1和整数和整数1是不同的概念:是不同的概念:字符字符1只是代表一个形状为只是代表一个形状为1的符号,在需的符号,在需要时按原样输出,在内存中以要时按原样输出,在内存中以ASCII码形式码形式存储,占存储,占1个字节个字节整数整数1是以整数存储方式(二进制补码方式)是以整数存储方式(二进制补码方式)存储的,占存储的,占2个或个或4个字节个字节0 0 1

16、 1 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12022-6-19第3章 顺序程序设计223.2.4 字符型数据字符型数据1.字符常量字符常量(1)用用单引号单引号包含的一个字符是字符型常量包含的一个字符是字符型常量(2)只能包含只能包含一个一个字符字符a, A, 1abc、a2022-6-19第3章 顺序程序设计233.2.4 字符型数据字符型数据有些以有些以“”开头的特殊字符称为开头的特殊字符称为转义字符转义字符转义字符转义字符 功能功能 n 回车换行符,光标移到下一行行首回车换行符,光标移到下一行行首 r 回车不换行,光标移动到本行行首回车不换行,光标移

17、动到本行行首 t 横向跳格(横向跳格(8位为一格,光标跳到下一格起位为一格,光标跳到下一格起 始位置,如第始位置,如第9或或17位等)位等)b 退一格,光标往左移动一格退一格,光标往左移动一格 2022-6-19第3章 顺序程序设计24转义字符转义字符 功能功能 用于输出反斜杠字符用于输出反斜杠字符“” 用于输出单引号字符用于输出单引号字符“”用于输出双引号字符用于输出双引号字符“” ddd一到三一到三位位八八进制数进制数ddd对应的对应的ASCII码字码字符符 xhh一到两位一到两位十六十六进制数进制数hh对应的对应的ASCII码码字符字符f 走纸换页走纸换页2022-6-19第3章 顺序程

18、序设计25举例举例练习:练习:printf(Youre my good friend!n); 在显示器输出什么在显示器输出什么?Youre my good friend! 2022-6-19第3章 顺序程序设计26举例举例例转义字符的使用例转义字符的使用#include void main ( ) printf( ab ct derftgn);printf(htibbj kn);运行结果:运行结果:f gdeh j k2022-6-19第3章 顺序程序设计273.2.4 字符型数据字符型数据2. 字符变量字符变量字符型变量用来存放字符常量,在内存中占一个字字符型变量用来存放字符常量,在内存中占

19、一个字节,存储的是字符的节,存储的是字符的ASCII码,与整数的存储形式码,与整数的存储形式相同,只能放一个字符。相同,只能放一个字符。字符变量的定义形式如下:字符变量的定义形式如下:char c1,c2;对对c1,c2赋值:赋值:c1=a;c2= b ;2022-6-19第3章 顺序程序设计283.2.4 字符型数据字符型数据2. 字符变量字符变量字符数据与整型数据可相互赋值,直接运算。字符数据与整型数据可相互赋值,直接运算。例如:例如: char c; c=97;相当于相当于c=a;2022-6-19第3章 顺序程序设计293.2.4 字符型数据字符型数据例向字符变量赋以整数例向字符变量赋

20、以整数#include void main()char c1,c2;c1=97;c2=98;printf(%c %cn,c1,c2);printf(%d %dn,c1,c2);说明:说明:在第在第3和第和第4行中,将整数行中,将整数97和和98分分别赋给别赋给c1和和c2,它的作用相当于以下两,它的作用相当于以下两个赋值语句:个赋值语句:c1= a;c2= b; 因为因为a和和b的的ASCII码为码为97和和98运行结果:运行结果: a b 97 982022-6-19第3章 顺序程序设计303.2.4 字符型数据字符型数据例大小写字母的转换例大小写字母的转换#include void mai

21、n()char c1,c2; c1=a; c2=b;c1=c1-32;c2=c2-32; printf(%c %c,c1,c2); 说明:说明:程序的作用是将两个小写字母程序的作用是将两个小写字母a和和b转换成大写字母转换成大写字母A和和B。从。从ASCII代码表代码表中可以看到每一个小写字母比它相应的中可以看到每一个小写字母比它相应的大写字母的大写字母的ASCII码大码大32。运行结果:运行结果: 2022-6-19第3章 顺序程序设计313.2.4 字符型数据字符型数据3.字符串常量是一对双引号括起来的字符序列。字符串常量是一对双引号括起来的字符序列。合法的字符串常量:合法的字符串常量:H

22、ow do you do. , CHINA,a , $123.45可以输出字符串,如可以输出字符串,如printf(How do you do. );每个字符串尾自动加一个每个字符串尾自动加一个0作为字符串结束标志作为字符串结束标志例字符串例字符串hello在内存中在内存中占内存单元不是占内存单元不是5个字符,个字符,而是而是6个字符,最后一个字符为个字符,最后一个字符为0 ,但在输出时不,但在输出时不输出输出0h e l l o 02022-6-19第3章 顺序程序设计323.2.4 字符型数据字符型数据a是字符常量,是字符常量,a是字符串常量。是字符串常量。如:假设如:假设c被指定为字符变

23、量被指定为字符变量 :char c;c=a; c=a;c=CHINA; 结论:不能把一个结论:不能把一个字符串字符串常量赋给常量赋给一个一个字符字符变量。变量。2022-6-19第3章 顺序程序设计333.2.5 浮点型数据浮点型数据浮点型数据是用来表示具有小数点的实数浮点型数据是用来表示具有小数点的实数float型(单精度浮点型)型(单精度浮点型)l编译系统为编译系统为float型变量分配型变量分配4个字节个字节l数值以规范化的二进制数指数形式存放数值以规范化的二进制数指数形式存放ldouble型(双精度浮点型)型(双精度浮点型)l编译系统为编译系统为double型变量分配型变量分配8个字节

24、个字节l15位有效数字位有效数字llong double (长双精度型)(长双精度型)2022-6-19第3章 顺序程序设计343.2.5 浮点型数据浮点型数据浮点型常量的表示方法浮点型常量的表示方法两种两种表示形式表示形式小数小数指数指数0.1233e-3注意:注意:字母字母e(或或E)之前必须有数字,且之前必须有数字,且e后面的指数后面的指数必须为整数必须为整数1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e 2022-6-19第3章 顺序程序设计353.2.5 浮点型数据浮点型数据规范化的指数形式:规范化的指数形式:在字母在字母e(或(或E)之前的小数部

25、分中,小数点左边应)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。有一位(且只能有一位)非零的数字。例如例如: 123.456可以表示为:可以表示为:123.456e0, 12.3456e1, 1.23456e2,0.123456e3, 0.0123456e4, 0.00123456e其中的其中的1.23456e3称为称为“规范化的指数形式规范化的指数形式”。2022-6-19第3章 顺序程序设计363.2.6 怎样确定常量的类型怎样确定常量的类型字符常量:由单引号括起来的单个字符或转字符常量:由单引号括起来的单个字符或转义字符义字符整型常量:不带小数点的数值整型常量:不带小

26、数点的数值l系统根据数值的大小确定系统根据数值的大小确定int型还是型还是long型等型等浮点型常量:凡以小数形式或指数形式出现浮点型常量:凡以小数形式或指数形式出现的实数的实数lC编译系统把浮点型常量都按双精度处理编译系统把浮点型常量都按双精度处理l分配分配8个字节个字节2022-6-19第3章 顺序程序设计37变量赋初值变量赋初值 (1)C语言允许在定义变量的同时使变量初始化,如:语言允许在定义变量的同时使变量初始化,如:int a=3; / 指定指定a为整型变量,初值为为整型变量,初值为3 float f=3.56; / 指定指定f为浮点型变量,初值为为浮点型变量,初值为3.56char

27、 c= a; / 指定指定c为字符变量,初值为为字符变量,初值为a2022-6-19第3章 顺序程序设计38变量赋初值变量赋初值 (2)可以使被定义的变量的一部分赋初值。可以使被定义的变量的一部分赋初值。 如如: int a,b,c=5; 表示指定表示指定a,b,c为整型变量,但只对为整型变量,但只对c初始化,初始化,c的初值为的初值为5(3)如果对几个变量赋以同一个初值,应写成:如果对几个变量赋以同一个初值,应写成:int a=3,b=3,c=3; 表示表示a,b,c的初值都是的初值都是3。不能写成。不能写成 int a=b=c=3; 注意:初始化不是在编译阶段完成的而是在程序注意:初始化不

28、是在编译阶段完成的而是在程序运行时执行本函数时赋初值的,相当于有一个运行时执行本函数时赋初值的,相当于有一个赋值语句。赋值语句。2022-6-19第3章 顺序程序设计39数值型数据的混合运算数值型数据的混合运算混合运算:整型(包括混合运算:整型(包括int,short,long)、浮点型)、浮点型(包括(包括float,double )可以混合运算。运算时,不同)可以混合运算。运算时,不同类型的数据要先转换成同一类型,然后进行运算。类型的数据要先转换成同一类型,然后进行运算。说明:说明: 这种类型这种类型转换是由系统转换是由系统自动进行的。自动进行的。2022-6-19第3章 顺序程序设计40

29、举例举例有如下变量有如下变量类型:类型:char c;int i;float f;double d;计算表达式:计算表达式:c+f+i+dchar float int doublec + f + i + d int double double double该表达式值的类型该表达式值的类型是是double类型类型 doubledoubledouble2022-6-19第3章 顺序程序设计41 3.2.7 运算符和表达式运算符和表达式C运算符简介运算符简介(1)算术运算符算术运算符 (+ - * / %)(2)关系运算符关系运算符 ( = = !=)(3)逻辑运算符逻辑运算符 ( ! & |)(4

30、)位运算符位运算符 ( | &)(5)赋值运算符赋值运算符 (=及其扩展赋值运算符)及其扩展赋值运算符)(6)条件运算符条件运算符 ( ?: )(7)逗号运算符逗号运算符 ( , )2022-6-19第3章 顺序程序设计42 3.2.7 运算符和表达式运算符和表达式(8)指针运算符指针运算符 (*和和&)(9)求字节数运算符(求字节数运算符(sizeof)(10)强制类型转换运算符(强制类型转换运算符( (类型类型) )(11)成员运算符(成员运算符(-)(12)下标运算符(下标运算符( )(13)其他其他 (如函数调用运算符(如函数调用运算符( ))2022-6-19第3章 顺序程序设计43

31、 3.2.7 运算符和表达式运算符和表达式(1)基本的算术运算符基本的算术运算符:+ (加法运算符,或正号运算符。如(加法运算符,或正号运算符。如:3+5、+3)- (减法运算符,或负号运算符。如(减法运算符,或负号运算符。如:5-2、-3)* (乘法运算符。如(乘法运算符。如:3*5)/ (除法运算符。如(除法运算符。如:5/3) (模运算符,或称(模运算符,或称求余求余运算符,运算符,%两侧均应为两侧均应为整型整型数据,如数据,如:7%4的值为的值为3)。)。2022-6-19第3章 顺序程序设计44 3.2.7 运算符和表达式运算符和表达式除法运算符除法运算符“/”进行求商运算。对于不同

32、类型的运进行求商运算。对于不同类型的运算对象,除法表达式计算结果的类型也会不同。算对象,除法表达式计算结果的类型也会不同。例:例:计算计算x/y如果如果x,y是是整型整型,则结果为,则结果为整型整型,小数部分被,小数部分被略去。略去。 5/2结果为结果为2,整型量,整型量 2/5结果为结果为0,整型量,整型量如果如果x,y其中一个为实型量,则结果为实型其中一个为实型量,则结果为实型5.0/2.0结果为结果为2.52022-6-19第3章 顺序程序设计45 3.2.7 运算符和表达式运算符和表达式(2) 算术表达式:用算术运算符和括号将运算对象算术表达式:用算术运算符和括号将运算对象(也称操作数

33、)连接起来的、符合(也称操作数)连接起来的、符合C语法规则的式语法规则的式子,称为子,称为C算术表达式。算术表达式。 运算对象运算对象包括常量、变量、函数等。包括常量、变量、函数等。例如例如: a*b/c-1.5+a是一个合法的表达式。是一个合法的表达式。2022-6-19第3章 顺序程序设计46 3.2.7 运算符和表达式运算符和表达式数学式子改写成数学式子改写成C语言表达式应注意以下几点:语言表达式应注意以下几点:乘号不能省。如:乘号不能省。如:ab应写成应写成 a*b。所有符号写成一行。所有符号写成一行。上下角标不能直接写,需要转换。上下角标不能直接写,需要转换。 C语言中只有圆语言中只

34、有圆括号,可以嵌套使用,避免两个运算符并置。如括号,可以嵌套使用,避免两个运算符并置。如a*b/-c应该为应该为a*b/(-c)。 调用标准数学函数时,自变量应写在一对括号内。调用标准数学函数时,自变量应写在一对括号内。 如:如:|-2163| 应写成应写成fabs(-2163),SIN12 应写成应写成sin(12)2022-6-19第3章 顺序程序设计47 3.2.7 运算符和表达式运算符和表达式三角函数的自变量应使用弧度。如三角函数的自变量应使用弧度。如SIN50 应写成应写成sin(50*3.1415926/180)要使所写的算术表达式与数学式子等价。例要使所写的算术表达式与数学式子等

35、价。例 3x2+4xysin56 -|x-y|e2.3 3*x*x+4*x*y*sin(56*3.1415926/180)-fabs(x-y)*exp(2.3)sin +cos sin sin(alf)+cos(alf)*sin(bate) 2022-6-19第3章 顺序程序设计48举例举例一般数学式一般数学式a(b+c)+dac22rxyyxx1算术表达式算术表达式(a*(b+c)+d)*a*c 将方括号改成圆括将方括号改成圆括号,号,*不能省略不能省略x/(x+y)+1.0/(x*y) 其中不能出现分其中不能出现分数,改用除法运算符,圆括号不数,改用除法运算符,圆括号不能缺少能缺少3.14

36、159*r*r/2.0 其中其中 为非字母为非字母字符,要用实型常量代替字符,要用实型常量代替2022-6-19第3章 顺序程序设计49 3.2.7 运算符和表达式运算符和表达式C语言规定了运算符的优先级语言规定了运算符的优先级 在表达式求值时,先按运算符的优先级别高低次序在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。执行,例如先乘除后加减。 C规定了各种运算符的结合方向(结合性)规定了各种运算符的结合方向(结合性) 算术运算符的结合方向为算术运算符的结合方向为“自左至右自左至右”,即先左后,即先左后右右 。2022-6-19第3章 顺序程序设计50 3.2.7 运算符和

37、表达式运算符和表达式(3)强制类型转换运算符强制类型转换运算符可以利用强制类型转换运算符将一个表达式转换成可以利用强制类型转换运算符将一个表达式转换成所需类型。所需类型。 一般形式一般形式:(类型名)(表达式)(类型名)(表达式)例如:例如:(double)a 将将a转换成转换成double类型类型(int)(x+y) 将将x+y的值转换成整型的值转换成整型(float)(5%3 ) 将将5%3的值转换成的值转换成float型型2022-6-19第3章 顺序程序设计51 3.2.7 运算符和表达式运算符和表达式例强制类型转换例强制类型转换#include void main ()float x

38、;int i;x=3.6;i=(int)x;printf(x=%f, i=%dn,x,i);说明:说明:有两种类型转换,一种是在运有两种类型转换,一种是在运算时不必用户指定,系统自动进行算时不必用户指定,系统自动进行的类型转换,如的类型转换,如3+6.5。第二种是强。第二种是强制类型转换。当自动类型转换不能制类型转换。当自动类型转换不能实现目的时,可以用强制类型转换。实现目的时,可以用强制类型转换。运行结果:运行结果: x3.600000, i=32022-6-19第3章 顺序程序设计52 3.2.7 运算符和表达式运算符和表达式(4) 自增、自减运算符(自增、自减运算符(+ -)作用是使作用

39、是使变量变量的值增的值增1或减或减1+i,-i(在使用(在使用i之前,先使之前,先使i的值加的值加/减减1)i+,i-(在使用(在使用i之后,使之后,使i的值加的值加/减减1)2022-6-19第3章 顺序程序设计53 3.2.7 运算符和表达式运算符和表达式i+与与+i的区别:的区别: +i是先执行是先执行i=i+1后,再使用后,再使用i的值;的值; i+是先使用是先使用i的值后,再执行的值后,再执行i=i+1。例如:假设例如:假设 i 的值为的值为3j= +i;i的值先变成的值先变成4, 再赋给再赋给j,j的值均为的值均为4j= i+ ;先将;先将 i的值的值3赋给赋给j,j的值为的值为3

40、,然后,然后i变为变为42022-6-19第3章 顺序程序设计54举例举例 int x,m,n; x=10; m=x+;n=+x;该语句执行后,该语句执行后,m=10,x=11该语句执行后,该语句执行后,n=12,x=122022-6-19第3章 顺序程序设计55 3.2.7 运算符和表达式运算符和表达式注意:注意: (1)自增运算符自增运算符+,自减运算符,自减运算符-,只能用于变量,只能用于变量,而不能用于常量或表达式而不能用于常量或表达式 (2)+和和-的结合方向是的结合方向是“自右至左自右至左”自增(减)运算符常用于循环语句中使循环变量自自增(减)运算符常用于循环语句中使循环变量自动加

41、动加1。也用于指针变量,使指针指向下一个地址。也用于指针变量,使指针指向下一个地址2022-6-19第3章 顺序程序设计56 3.2.7 运算符和表达式运算符和表达式(5) 有关表达式使用中的问题说明有关表达式使用中的问题说明 ANSI C并没有具体规定表达式中的子表达式的求并没有具体规定表达式中的子表达式的求值顺序,允许各编译系统自己安排。值顺序,允许各编译系统自己安排。 例如:对表达式例如:对表达式 a = f1( )+f2( ) 并不是所有的编译系统都先调用并不是所有的编译系统都先调用f1( ), 然后调用然后调用f2( ),在有的情况下结果可能不同。,在有的情况下结果可能不同。2022

42、-6-19第3章 顺序程序设计57 3.2.7 运算符和表达式运算符和表达式 C语言中有的运算符为一个字符,有的运算符由两语言中有的运算符为一个字符,有的运算符由两个字符组成个字符组成 ,为避免误解,最好采取大家都能理解,为避免误解,最好采取大家都能理解的写法。的写法。 例如:不要写成例如:不要写成i+j的形式,而应写成的形式,而应写成 (i+)+j的形式。的形式。2022-6-19第3章 顺序程序设计58举例举例#include stdio.hvoid main()int i=1,j=2;printf(i=%d,j=%dn,i,j);printf(i+j=%dn,i+j);i=1;j=2;p

43、rintf(i+(+j)=%dn,i+(+j);i=1;j=2;printf(i+)+j=%dn,(i+)+j);printf(i=%d,j=%dn,i,j);2022-6-19第3章 顺序程序设计59 3.2.7 运算符和表达式运算符和表达式在调用函数时,实参数的求值顺序,在调用函数时,实参数的求值顺序,C标准并无统标准并无统一规定。一规定。例如:例如:i的初值为的初值为3,如果有下面的函数调用:,如果有下面的函数调用:printf(%d,%d,i,i+) 在有的系统中,从左至右求在有的系统中,从左至右求值,输出值,输出“3,3”。在多数系统中对函数参数的求值。在多数系统中对函数参数的求值顺

44、序是自右而左,顺序是自右而左,printf函数输出的是函数输出的是“4,4”。以上。以上这种写法不宜提倡,这种写法不宜提倡, 最好改写成最好改写成 j = i+; printf(%d, %d, j,i)2022-6-19第3章 顺序程序设计603.3 C语句语句3.3.1 C语句的作用和分类语句的作用和分类3.3.2 最基本的语句最基本的语句赋值语句赋值语句3.3.* 逗号运算符和逗号表达式逗号运算符和逗号表达式2022-6-19第3章 顺序程序设计613.3.1 C语句的作用和分类语句的作用和分类C程序程序源程序文件源程序文件1源程序文件源程序文件2源程序文件源程序文件n预处理命令预处理命令

45、函数函数n函数函数1数据声明数据声明函数首部函数首部函数体函数体数据声明数据声明执行语句执行语句2022-6-19第3章 顺序程序设计623.3.1 C语句的作用和分类语句的作用和分类一个一个C程序可以由若干个程序可以由若干个源程序文件源程序文件组成组成一个源文件可以由若干个一个源文件可以由若干个函数函数和预处理命令以及全和预处理命令以及全局变量声明部分组成局变量声明部分组成一个函数由函数首部和一个函数由函数首部和函数体函数体组成组成函数体由数据声明和执行语句组成函数体由数据声明和执行语句组成C语句分为语句分为5类类控制语句控制语句函数调用语句函数调用语句表达式语句表达式语句空语句空语句复合语

46、句复合语句2022-6-19第3章 顺序程序设计633.3.1 C语句的作用和分类语句的作用和分类一、控制语句:完成一定的控制功能一、控制语句:完成一定的控制功能1、if() else 条件语句条件语句2、for() 循环语句循环语句3、while()循环语句循环语句4、do while();循环语句循环语句5、continue 继续语句继续语句6、break 间断语句间断语句7、switch()开关语句开关语句8、goto 转向语句转向语句 9、return 返回语句返回语句2022-6-19第3章 顺序程序设计643.3.1 C语句的作用和分类语句的作用和分类二、函数调用语句二、函数调用语

47、句一个函数调用加一个分号构成一个语句一个函数调用加一个分号构成一个语句printf(This is a C statement. );三、表达式语句三、表达式语句一个表达式加一个分号构成一个语句一个表达式加一个分号构成一个语句a = 3 ;分号分号赋值表达式赋值表达式表达式语句表达式语句2022-6-19第3章 顺序程序设计653.3.1 C语句的作用和分类语句的作用和分类四、空语句:只有一个分号的语句四、空语句:只有一个分号的语句什么也不做什么也不做用来做流程的转向点用来做流程的转向点用来作为循环语句中的循环体用来作为循环语句中的循环体五、复合语句:用一对五、复合语句:用一对括起来的语句括起

48、来的语句z=x+y; t=z/100;printf(%f,t);2022-6-19第3章 顺序程序设计663.3.2 最基本的语句最基本的语句赋值语句赋值语句赋值语句是由赋值表达式加上一个分号构成赋值语句是由赋值表达式加上一个分号构成例:例:a=100 赋值表达式赋值表达式 a=100; 赋值语句赋值语句2022-6-19第3章 顺序程序设计673.3.2 最基本的语句最基本的语句赋值语句赋值语句(1)赋值运算符赋值运算符赋值符号赋值符号“=”就是赋值运算符,它的作用是将一个就是赋值运算符,它的作用是将一个数据赋给一个变量。如数据赋给一个变量。如“a=3”的作用是执行一次赋的作用是执行一次赋值

49、操作(或称赋值运算)。把常量值操作(或称赋值运算)。把常量3赋给变量赋给变量a。也。也可以将一个表达式的值赋给一个变量。可以将一个表达式的值赋给一个变量。(2)类型转换类型转换如果赋值运算符两侧的类型不一致,但都是数值型如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。或字符型时,在赋值时要进行类型转换。2022-6-19第3章 顺序程序设计68举例举例#include void main () unsigned a;int b=-1;a=b;printf(%un,a);说明:说明:“%u”是输出无符号数时是输出无符号数时所用的格式符。如果所用的格式符。如果b为正

50、值,为正值,且在且在032767之间,则赋值后之间,则赋值后数值不变。数值不变。运行结果:运行结果: 655352022-6-19第3章 顺序程序设计693.3.2 最基本的语句最基本的语句赋值语句赋值语句(3) 复合的赋值运算符复合的赋值运算符在赋值符在赋值符“=”之前加上其他运算符,可以构成复合之前加上其他运算符,可以构成复合的运算符。的运算符。例如:例如:a+=3 等价于等价于 a=a+3x*y+8 等价于等价于 x=x*(y+8) x%=3 等价于等价于 x=x%32022-6-19第3章 顺序程序设计703.3.2 最基本的语句最基本的语句赋值语句赋值语句C语言规定可以使用语言规定可

51、以使用10种复合赋值运算符:种复合赋值运算符:+=,-=,*=,/=,%=,=,&=,=,|= 注意:如果右侧是包含若干项的表达式,则相当于注意:如果右侧是包含若干项的表达式,则相当于它有括号。它有括号。x%= y+3x= x%(y+3)不要错写成不要错写成x=x%y+32022-6-19第3章 顺序程序设计713.3.2 最基本的语句最基本的语句赋值语句赋值语句(4) 赋值表达式赋值表达式 由赋值运算符将一个变量和一个表达式连接起由赋值运算符将一个变量和一个表达式连接起来的式子称为来的式子称为“赋值表达式赋值表达式”。一般形式为:一般形式为: 例如:例如: “a=5”是一个赋值表达式是一个赋

52、值表达式2022-6-19第3章 顺序程序设计723.3.2 最基本的语句最基本的语句赋值语句赋值语句对赋值表达式求解的过程是:对赋值表达式求解的过程是: 求赋值运算符右侧的求赋值运算符右侧的“表达式表达式”的值的值; 赋给赋值运算符左侧的变量。赋给赋值运算符左侧的变量。例如例如: 赋值表达式赋值表达式“a=3*5”的值为的值为15,执行表达式,执行表达式后,后,变量变量a的值的值也是也是15。2022-6-19第3章 顺序程序设计733.3.2 最基本的语句最基本的语句赋值语句赋值语句左值左值 (lvalue) : 赋值运算符左侧的标识符赋值运算符左侧的标识符n变量可以作为左值变量可以作为左

53、值n表达式不能作为左值(如表达式不能作为左值(如a+b)n常量也不能作为左值常量也不能作为左值右值右值 (rvalue) :出现在赋值运算符右侧的表达式:出现在赋值运算符右侧的表达式 n左值也可以出现在赋值运算符右侧,因而左值左值也可以出现在赋值运算符右侧,因而左值 都可以作为右值都可以作为右值2022-6-19第3章 顺序程序设计743.3.2 最基本的语句最基本的语句赋值语句赋值语句赋值表达式中的赋值表达式中的“表达式表达式”,又可以是一个赋值表,又可以是一个赋值表达式。达式。例如例如: a=(b=5)分析:括号内的分析:括号内的“b=5”是一个赋值表达式,它的值是一个赋值表达式,它的值等

54、于等于5。执行表达式。执行表达式“a=(b=5)”相当于执行相当于执行“b=5”和和“a=b”两个赋值表达式。两个赋值表达式。 赋值运算符按照赋值运算符按照“自右自右而左而左”的结合顺序,因此,的结合顺序,因此,“(b5)”外面的括号可外面的括号可以不要,即以不要,即“a=(b=5)”和和“a=b=5”等价。等价。2022-6-19第3章 顺序程序设计753.3.2 最基本的语句最基本的语句赋值语句赋值语句请分析下面的赋值表达式:请分析下面的赋值表达式:(a=3*5)=4*3分析:先执行括号内的运算,将分析:先执行括号内的运算,将15赋给赋给a,然后执,然后执行行4*3的运算,得的运算,得12

55、,再把,再把12赋给赋给a。最后。最后a的值为的值为12,整个表达式的值为,整个表达式的值为12。可以看到:。可以看到:(a=3*5)出现出现在赋值运算符的左侧,因此赋值表达式在赋值运算符的左侧,因此赋值表达式(a=3*5)是左是左值。值。不能写成不能写成:a=3*5=4*32022-6-19第3章 顺序程序设计763.3.2 最基本的语句最基本的语句赋值语句赋值语句赋值表达式也可以包含复合的赋值运算符。如:赋值表达式也可以包含复合的赋值运算符。如:a+=a-=a*a 假设假设a的值为的值为12分析:此赋值表达式的求解步骤如下分析:此赋值表达式的求解步骤如下 先进行先进行“a-=a*a”的运算

56、,的运算, 它相当于它相当于a=a-a*a,a的的值为值为12-144=-132。再进行再进行“a+=-132”的运算,相当于的运算,相当于a=a+(-132),a的的值为值为-132-132-264。2022-6-19第3章 顺序程序设计773.3.2 最基本的语句最基本的语句赋值语句赋值语句将赋值表达式作为表达式的一种,使赋值操作不仅将赋值表达式作为表达式的一种,使赋值操作不仅可以出现在赋值语句中,而且可以以表达式形式出可以出现在赋值语句中,而且可以以表达式形式出现在其他语句(如输出语句、循环语句等)中。现在其他语句(如输出语句、循环语句等)中。如:如:printf(%d,a=b); 分析

57、:如果分析:如果b的值为的值为3, 则输出则输出a的值(也是表达式的值(也是表达式a=b的值)为的值)为3。在一个语句中完成了赋值和输出双。在一个语句中完成了赋值和输出双重功能。重功能。2022-6-19第3章 顺序程序设计783.3.* 逗号运算符和逗号表达式逗号运算符和逗号表达式逗号运算符:逗号将两个表达式连接起来,又称为逗号运算符:逗号将两个表达式连接起来,又称为“顺序求值运算符顺序求值运算符”,如:,如:3+5,6+8一般形式:表达式一般形式:表达式1,表达式表达式2求解过程:先求解表达式求解过程:先求解表达式1,再求解表达式,再求解表达式2。整个。整个逗号表达式的值是表达式逗号表达式

58、的值是表达式2的值。的值。2022-6-19第3章 顺序程序设计793.3.* 逗号运算符和逗号表达式逗号运算符和逗号表达式例:逗号表达式例:逗号表达式a=3*5,a*4 分析:赋值运算符的优先级别高于逗号运算符,分析:赋值运算符的优先级别高于逗号运算符, 因因此应先求解此应先求解a=3*5。a的值为的值为15,然后求解,然后求解a*4,得,得60。整个逗号表达式。整个逗号表达式的值为的值为60。2022-6-19第3章 顺序程序设计803.3.* 逗号运算符和逗号表达式逗号运算符和逗号表达式一个逗号表达式又可以与另一个表达式组成一个新一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式的

59、逗号表达式 如:如:(a=3*5,a*4),a+5先计算出先计算出a的值等于的值等于15,再进,再进行行a*4的运算得的运算得60(但(但a值未变,仍为值未变,仍为15),再进行),再进行a+5得得20,即整个表达式的值为,即整个表达式的值为20。2022-6-19第3章 顺序程序设计813.3.* 逗号运算符和逗号表达式逗号运算符和逗号表达式逗号表达式的一般形式可以扩展为逗号表达式的一般形式可以扩展为表达式表达式1,表达式,表达式2,表达式,表达式3,表达式,表达式n整个逗号表达式的值为表达式整个逗号表达式的值为表达式n的值。的值。逗号运算符是所有运算符中级别最低的逗号运算符是所有运算符中级

60、别最低的 x=(a=3,6*3) x=a=3, 6*3赋值表达式,将一个赋值表达式,将一个逗号表达式的值赋给逗号表达式的值赋给x,x的值等于的值等于18逗号表达式,包括一个逗号表达式,包括一个赋值表达式和一个算术赋值表达式和一个算术表达式,表达式,x的值为的值为3,整,整个逗号表达式的值为个逗号表达式的值为18。 2022-6-19第3章 顺序程序设计823.3.* 逗号运算符和逗号表达式逗号运算符和逗号表达式注意注意:并不是任何地方出现的逗号都是作为逗号运算并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。符。例如函数参数也是用逗号来间隔的。 如:如:printf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论