大学C语言使用教程第03章数据类型、运算符和表达式.ppt

上传人:sccc 文档编号:5618107 上传时间:2023-08-02 格式:PPT 页数:57 大小:1.53MB
返回 下载 相关 举报
大学C语言使用教程第03章数据类型、运算符和表达式.ppt_第1页
第1页 / 共57页
大学C语言使用教程第03章数据类型、运算符和表达式.ppt_第2页
第2页 / 共57页
大学C语言使用教程第03章数据类型、运算符和表达式.ppt_第3页
第3页 / 共57页
大学C语言使用教程第03章数据类型、运算符和表达式.ppt_第4页
第4页 / 共57页
大学C语言使用教程第03章数据类型、运算符和表达式.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《大学C语言使用教程第03章数据类型、运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《大学C语言使用教程第03章数据类型、运算符和表达式.ppt(57页珍藏版)》请在三一办公上搜索。

1、,C语言程序设计,信管教研室:唐晶磊E-Mail:Tel:87091337Office:信息工程学院 306,2023年8月2日,C语言程序设计 唐晶磊,第一章 绪论第二章 算法与流程图第三章 数据类型、运算符和表达式第四章 程序的控制结构第五章 函数第六章 数组第七章 指针第八章 结构体第九章 文件操作,目 录,2023年8月2日,C语言程序设计 唐晶磊,1.数据类型2.常量3.格式化输入输出4.常用运算符和表达式5.运算符的优先级与结合性,第三章 数据类型、运算符与表达式,2023年8月2日,C语言程序设计 唐晶磊,1.1 定义1.2 位与字节1.3 基本数据类型1.4 数据类型修饰符1.

2、5 变量声明1.6 浮点型数据有效数字位数1.7 char型与int型之间的关系,1.数据类型,2023年8月2日,C语言程序设计 唐晶磊,(1)数据为什么要区分类型?不同类型的数据代表不同的数据表示形式、合法的取值范围、占用内存空间大小及可参与的运算种类。(2)从基本数据类型到抽象数据类型基本数据类型 构造数据类型 抽象数据类型,1.1 数据类型定义,2023年8月2日,C语言程序设计 唐晶磊,1.1 数据类型定义,2023年8月2日,C语言程序设计 唐晶磊,(1)一个位有多大?只能是“0”或者“1”(2)一个字节有多大?保存一个字符(英文字母、数字、符号)ASCII(美国标准信息交换码)编

3、码两个字节保存一个汉字GB编码,1.2 位与字节,2023年8月2日,C语言程序设计 唐晶磊,Int:整数,在目前绝大多数机器上占4个字节。Float:单精度浮点数,一般是4个字节长。Double:双精度浮点数,一般是8个字节长。Char:字符,一般是1个字节长。用来表示256个ASCII字符,或者0255的整数。,1.3 基本数据类型,2023年8月2日,C语言程序设计 唐晶磊,字符类型与ASCII表,1.3 基本数据类型,2023年8月2日,C语言程序设计 唐晶磊,shortshort int,短整数,一般2个字节长。longlong int,长整数,一般是4个字节长。long doubl

4、e,长双精度(高精度)浮点数,一般是10个字节长。signed可修饰char、int、short和long,是有符号的整数(正整数、0和负整数)。一般缺省为有符号,此修饰符通常省略。unsigned可修饰char、int、short和long,是无符号整数(正整数和0)。,1.4 数据类型修饰符,2023年8月2日,C语言程序设计 唐晶磊,可用sizeof获得变量或者数据类型的长度。,#include int main()printf(char%dn,sizeof(char);printf(int%dn,sizeof(int);printf(short int%dn,sizeof(short)

5、;printf(long int%dn,sizeof(long);printf(float%dn,sizeof(float);printf(double%dn,sizeof(double);return 0;,1.5 变量声明,2023年8月2日,C语言程序设计 唐晶磊,使用变量的基本原则变量必须先定义,后使用所有变量必须在第一条可执行语句前定义声明的顺序无关紧要。一条声明语句可声明若干个同类型的变量。声明变量,是初始化变量的最好时机。,*不被初始化的变量,其值为危险的随机数,char esc=a;int i=1;int sum=0;float eps=1.0e-5;,1.5 变量声明,202

6、3年8月2日,C语言程序设计 唐晶磊,float型数据提供7位有效数字,double型数据提供16位有效数字。使用不当导致舍入误差,int main()float a;double b;a=123456.789e4;b=123456.789e4;printf(%fn%lfn,a,b);,1.6 实型数据有效数字位数,2023年8月2日,C语言程序设计 唐晶磊,小写字母转换为大写字母,#include int main()char ch=b;ch=b-32;printf(%c,%dn,ch,ch);,#include int main()char ch=b;ch=b-(a-A);printf(%

7、c,%dn,ch,ch);,1.7 char型与int型之间的关系,2023年8月2日,C语言程序设计 唐晶磊,1.数据类型2.常量3.格式化输入输出4.常用运算符和表达式5.运算符的优先级与结合性,第三章 数据类型、运算符与表达式,2023年8月2日,C语言程序设计 唐晶磊,2.1 整型与浮点型常量2.2 八进制与十六进制常量2.3 字符常量2.4 字符串常量2.5 枚举常量2.6 符号常量2.7 const常量,2.常量,2023年8月2日,C语言程序设计 唐晶磊,整型常量有符号常量(省略):18、-31长整型常量:123l、123L、123456l、123456L无符号型量:123u、1

8、23U浮点常量十进制小数形式:123.45、456.78指数形式:1e-2、4.5e3单精度实型常量:123.45f、456.78F、1e-2f、4.5e3F长双精度型常量:123.45l、456.78L、1e-2l、4.5e3L双精度的怎么写?,2.1 整型与浮点型常量,2023年8月2日,C语言程序设计 唐晶磊,以数字“0”开始的整型常量是八进制数022、-037010和10大小不一样因为八进制并不常用,所以此种表示法比较少见以“0 x”或者“0X”开始的常量是十六进制AF和af用来表示十进制的1015十六进制的形式比较常用,尤其在进行位一级的控制的时候0 x12、-0 x1F,-0 x1

9、f,2.2 八进制与十六进制常量,2023年8月2日,C语言程序设计 唐晶磊,(1)字符常量的表示方法a,A,5,%,$单引号内只能有一个字符,除非用“”开头(2)是一个普通整数,可参与各种数学运算每个字符具有一个0255之间的数值,可从ASCII查出注意:5和整数5的区别,2.3 字符常量,2023年8月2日,C语言程序设计 唐晶磊,(3)转义字符一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示,2.3 字符常量,2023年8月2日,C语言程序设计 唐晶磊,用双引号括住的由0个或多个字符组成的字符序列“I am a string”。“”表示空字符串。转义字符也可以在字符串中使用。引号

10、只作为字符串开始和结束的标志。C语言内部用0表示字符串的结束。除注释外,是唯一(二?)可以出现中文的地方。“x”和x是不同的。里定义了一系列专门的字符串处理函数。,2.4 字符串常量,2023年8月2日,C语言程序设计 唐晶磊,enum weeks MON,TUE,WED,THU,FRI,SAT,SUN;enum weeks today;enum response no,yes,none;enum response answer;today=TUE;answer=yes;if(answer=yes)printf(Today is Tuesday.n);else printf(Today is

11、NOT Tuesday.n);,2.5 枚举常量,2023年8月2日,C语言程序设计 唐晶磊,符号常量,一般采用大写字母表示#define 标识符 字符串不是语句,而是一种编译预处理命令,#include#define PI 3.14159int main()float r;scanf(“%f”,2.6 符号常量,2023年8月2日,C语言程序设计 唐晶磊,用const修饰定义的变量为常量const float pi=3.1425926;常量只能在定义时赋值,然后不能再改变其值常数、const常量、宏常量和枚举常量,都可以用来表示一个永远不会改变的数前者不建议直接使用,而用后三者代替,2.7

12、const常量,2023年8月2日,C语言程序设计 唐晶磊,1.数据类型2.常量3.格式化输入输出4.常用运算符和表达式5.运算符的优先级与结合性,第三章 数据类型、运算符与表达式,2023年8月2日,C语言程序设计 唐晶磊,scanf函数和printf函数是C语言程序中使用最频繁的两个函数。,printf函数常用来在显示器上输出程序的执行结果或提示用户输入信息。,scanf函数用来读取来自键盘的输入。,3 格式化输入输出,2023年8月2日,C语言程序设计 唐晶磊,printf函数简介,printf(格式串,表达式1,表达式2,.);,格式串:向显示器输出内容,包含普通字符和转换说明两部分。

13、printf(“i=%d,j=%d,x=%f,y=%f,i,j,x,y);,转换说明:以字符%开头。为打印时待填充的占位符。字符%后的信息指定了把数值从内部形式转换成打印形式的方法。,%d:把int型值从二进制转换成十进制数字组成的字符串。,%f:把float型值从二进制转换成浮点数字组成的字符串。,3 格式化输入输出,2023年8月2日,C语言程序设计 唐晶磊,int i,j;float x,y;i=10;j=20;x=43.2892f;y=5527.0f;printf(i=%d,j=%d,x=%f,y=%fn,i,j,x,y);,printf函数简介,注意:转换说明的个数和待输出变量的个数

14、要相等,且变量的类型要与%后面的字符相匹配。输出十进制整数用%d,输出点精度浮点数用%f。,3 格式化输入输出,2023年8月2日,C语言程序设计 唐晶磊,转换说明中说明以什么样的格式来显式变量。一般的转换说明的形式为:,%m.pX 或%-m.pX,其中,X可以为 d,e,f,g等,m表示至少占用字符空间,即:要显示的最少字符数。如果要显示的数值所需字符数少于m,那么值在字段内是右对齐的。如要显示的值所需的字符数多于m,那么字段宽度会自动扩展为所需的尺寸。m前面的-号表示左对齐。,3 格式化输入输出,2023年8月2日,C语言程序设计 唐晶磊,p的含义依据X来定:,d表示十进制形式的整数。p指

15、明了待显示数字的最少个数(必要时在数前面加上额外的0),如果省略p,则默认它的值为1。e表示指数(科学计数法)形式的浮点数。p指明了小数点后应该出现的数字的个数(默认是6),如果p为0,则不显示小数点f表示“定点十进制”形式的浮点数,没有指数。p的含义和与在说明符e中的一样。g表示指数形式或者定点十进制形式的浮点数,形式的选择根据数的大小决定。,3 格式化输入输出,2023年8月2日,C语言程序设计 唐晶磊,scanf函数简介,scanf(格式串,表达式1,表达式2,.);,scanf函数格式串包括普通字符和转换说明两部分。scanf函数的转换说明和printf函数的转换说明的用法本质上一致的

16、。,多数情况下,scanf函数的格式串只包含转换说明。例如:,int i,j;float x,y;scanf(%d%d%f%f,3 格式化输入输出,2023年8月2日,C语言程序设计 唐晶磊,使用scanf函数时,必须检查转换说明的个数与输入变量的个数是否相等,并检查每个转换是否合适相对应的变量。,int i,j;float x,y;scanf(%d%d%f%f,四个转换说明,四个输入变量,一定要注意:输入变量前面必须有符号&。,&i:表示i的地址。,3 格式化输入输出,2023年8月2日,C语言程序设计 唐晶磊,scanf函数简介,scanf(格式串,表达式1,表达式2,.);,scanf本

17、质上是一种模式匹配函数,它试图把输入的字符组与格式串相匹配。,int i,j;float x,y;scanf(%d%d%f$%f,1-20.3$-4.0e3,表示空格;表示回车符。,scanf函数在寻找数的起始位置时,会忽略空白字符(包括:空格符、水平和垂直制表符、换页符和换行符),3 格式化输入输出,2023年8月2日,C语言程序设计 唐晶磊,scanf函数简介,scanf(格式串,表达式1,表达式2,.);,scanf函数本质上是一种模式匹配函数,它试图把输入的字符组与格式串相匹配。,int i,j;float x,y;scanf(%d%d%f$%f,1-20.3$-4.0e3,表示空格;

18、表示回车符。,过滤掉前面的两个空格,读入1,读入回车符,回车符不是数字,把回车符放回原处,供后续读取。将1存入变量i中。,3 格式化输入输出,2023年8月2日,C语言程序设计 唐晶磊,scanf函数简介,scanf(格式串,表达式1,表达式2,.);,scanf函数本质上是一种模式匹配函数,它试图把输入的字符组与格式串相匹配。,int i,j;float x,y;scanf(%d%d%f$%f,1-20.3$-4.0e3,表示空格;表示回车符。,过滤掉回车符,读入-,读入2,读入0,读入空格,空格不是数字,将空格放回原处。将-20存入变量j中。,3 格式化输入输出,2023年8月2日,C语言

19、程序设计 唐晶磊,scanf函数简介,scanf(格式串,表达式1,表达式2,.);,scanf函数本质上是一种模式匹配函数,它试图把输入的字符组与格式串相匹配。,int i,j;float x,y;scanf(%d%d%f$%f,1-20.3$-4.0e3,表示空格;表示回车符。,过滤掉3个空格,读入.,读入3,读入$,$不是数字,把$放回原处。将.3存入变量x中。,3 格式化输入输出,2023年8月2日,C语言程序设计 唐晶磊,scanf函数简介,scanf(格式串,表达式1,表达式2,.);,scanf函数本质上是一种模式匹配函数,它试图把输入的字符组与格式串相匹配。,int i,j;f

20、loat x,y;scanf(%d%d%f$%f,1-20.3$-4.0e3,表示空格;表示回车符。,读入$,匹配$。继续读入后续字符。,3 格式化输入输出,2023年8月2日,C语言程序设计 唐晶磊,scanf函数简介,scanf(格式串,表达式1,表达式2,.);,scanf函数本质上是一种模式匹配函数,它试图把输入的字符组与格式串相匹配。,int i,j;float x,y;scanf(%d%d%f$%f,1-20.3$-4.0e3,表示空格;表示回车符。,依次读入-,4,.,0,e,3和回车符,回车符不是数字,还回原处。将-4.0e3存入变量y中。,3 格式化输入输出,2023年8月2

21、日,C语言程序设计 唐晶磊,1.数据类型2.常量3.格式化输入输出4.常用运算符和表达式5.运算符的优先级与结合性,第三章 数据类型、运算符与表达式,2023年8月2日,C语言程序设计 唐晶磊,4.1 算术运算符4.2 关系运算符4.3 逻辑运算符4.4 类型转换运算符4.5 增一减一运算符4.6 位操作运算符4.7 赋值运算符4.8 逗号运算符4.9 条件表达式,4.常用运算符和表达式,2023年8月2日,C语言程序设计 唐晶磊,+,-,*,/加、减、乘、除运算四则混合运算中,先算乘除,后算加减,按从左向右的顺序计算,左结合%:求余运算,常用的标准数学函数,4.1 算术运算符,2023年8月

22、2日,C语言程序设计 唐晶磊,,=,=,=,!=大于,大于等于,小于,小于等于,等于,不等于关系运算符运算出的结果为0和非00,表示假,即该关系不成立非0,表示真,即该关系成立,4.2 关系运算符,2023年8月2日,C语言程序设计 唐晶磊,逻辑运算也被称为布尔(Boolean)运算&与运算(a b&b c);a大于b,并且b大于c|或运算(a b|b c);a大于b,或者b大于c!求反(!a);如果a是0,结果非0;如果a是非0,结果是0,并不改变a的值,4.3 逻辑运算符,2023年8月2日,C语言程序设计 唐晶磊,ch是英文大写字母(ch=A)&(ch=Z)判断某一年year是否是闰年:

23、能被4整除,但不能被100整除;能被400整除;(year%4=0)&(year%100!=0)|(year%400=0),实例,2023年8月2日,C语言程序设计 唐晶磊,在进行赋值操作时,会发生类型转换。将取值范围小的类型转为取值范围大的类型是安全的。反之是不安全的:如果大类型的值在小类型能容纳的范围之内,则平安无事。但是,浮点数转为整数,会丢失小数部分,非四舍五入。反之,转换后的结果必然是错误的,具体结果与机器和实现方式有关。,4.4 类型转换,2023年8月2日,C语言程序设计 唐晶磊,同种数据类型的运算结果,还是该类型不同种数据类型的运算结果,是两种类型中取值范围更大的那种long

24、double double float long int short char把数据赋值给另外一种类型变量也会发生自动类型转换从小到大,顺利转换从大到小,可能丢失信息(好的编译器会发出警告),4.4.1 自动类型转换,2023年8月2日,C语言程序设计 唐晶磊,可通过“(类型)表达式”的方式把表达式的值转为任意类型。,int main()int m=5;printf(m/2=%dn,m/2);printf(float)(m/2)=%fn,(float)(m/2);printf(float)m/2=%fn,(float)m/2);printf(m=%dn,m);return 0;,4.4.2 强

25、制类型转换符,2023年8月2日,C语言程序设计 唐晶磊,n+,n-,+n,-n+让参与运算的变量加1,-让参与运算的变量减1作为后缀运算符时,先取n的值,然后加/减1作为前缀运算符时,先加/减1,然后取n的值m=n+;等价于m=n;n+;m=+n;等价于n+;m=n;,4.5 增一和减一运算符,2023年8月2日,C语言程序设计 唐晶磊,良好的程序设计风格提倡:在一行语句中,一个变量只能出现一次加1或者减1运算。过多的加1和减1运算混合,不仅可读性差,而且因为编译器实现的方法不同,导致不同编译器产生不同的运行结果。,4.5 增一和减一运算符,2023年8月2日,C语言程序设计 唐晶磊,&按位

26、与运算|按位或运算按位异或运算,按位右移运算按位求反,4.6 位操作运算符,2023年8月2日,C语言程序设计 唐晶磊,下面两个语句几乎是等价的i=i+2;i+=2;+、-、*、/、%、&、|运算符都可以按此种方式处理这种形式看起来更简洁,执行效率比B语言以前的语言更高。,4.7 赋值运算符,2023年8月2日,C语言程序设计 唐晶磊,表达式1,表达式2,.,表达式n主要用在循环语句中,同时对多个变量赋初值等 for(i=0,j=0;i j;i+,j+),4.8 逗号运算符,2023年8月2日,C语言程序设计 唐晶磊,把a和b中的最大值放入z中if(a b)z=a;else z=b;z=(a

27、b)?a:b;*忌过于繁杂,4.9 条件表达式,2023年8月2日,C语言程序设计 唐晶磊,1.数据类型2.常量3.格式化输入输出4.常用运算符和表达式5.运算符的优先级与结合性,第三章 数据类型、运算符与表达式,2023年8月2日,C语言程序设计 唐晶磊,()-.!+-+-*&(类型)sizeof*/%+-=!=&|&|?:=+=-=*=/=%=&=|=,高低,5.1 优先级,背下优先级表必要性不大。用括号来控制运算顺序更直观、方便,并减少出错的概率。,2023年8月2日,C语言程序设计 唐晶磊,多数运算符为左结合少数为右结合:一元运算符赋值运算符条件运算符,5.2 结合性,2023年8月2日,C语言程序设计 唐晶磊,变量的命名规则数据类型char,short,int,long,float,double,long doublesigned,unsignedenum常数、转义字符运算符算术运算符、关系运算符、逻辑运算符、增一/减一运算符、位运算符、赋值运算符、类型强转运算符、逗号运算符、条件运算符(?:)、sizeof类型转换优先级和结合性,本章小结,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号