数据类型运算符和表达式课件.pptx

上传人:莉*** 文档编号:80052523 上传时间:2023-03-22 格式:PPTX 页数:86 大小:342.26KB
返回 下载 相关 举报
数据类型运算符和表达式课件.pptx_第1页
第1页 / 共86页
数据类型运算符和表达式课件.pptx_第2页
第2页 / 共86页
点击查看更多>>
资源描述

《数据类型运算符和表达式课件.pptx》由会员分享,可在线阅读,更多相关《数据类型运算符和表达式课件.pptx(86页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1目 录数据类型、常量和变量的定义运算符的种类、优先级和结合方向表达式的类型和求值简单的C程序设计及基本输入输出第1页/共86页2C的数据类型(Data Types)基本类型整型、字符型、浮点型(实型)、枚举类型构造类型数组类型、结构体类型、共用体类型指针类型空类型第2页/共86页3数据类型、常量和变量C的数据结构是以数据类型形式出现的由前述数据类型可以构造出更复杂的数据结构C语言的数据有常量和变量之分常量和变量都分别属于某一数据类型程序中用到的所有数据都必须指定类型本章仅介绍基本数据类型第3页/共86页4标识符(Identifier)标识符变量名、符号常量名、函数名、类型名标识符命名规范由字

2、母、数字、下划线(Underscore,_)组成第一个字符必须为字母或下划线C语言标识符是大小写敏感的标识符的名称一般应具有一定的含义不要与C语言关键字(Keywords)重复一般不要使用以下划线开头的标识符第4页/共86页5标识符示例正确的标识符student、num1、_SUM、_1_2_3MyName、myname、my_name错误的标识符room3-1包含了其他字符(减号)2men以数字开头long与关键字重复Mr.Zhu 包含了其他字符(小数点)第5页/共86页6常量(Constants)常量程序运行过程中,其值不能被改变的量例如:12、-6.7、a符号常量(Symbolic Co

3、nstants)用一个标识符代表的常量相当于把标识符用一个常量简单替换下来标识符是一个整体,不要试图拆开来替换含义清楚,一改全改习惯上符号常量名用大写字母第6页/共86页7常量示例#define PRICE 30#define NUM 12void main().total=NUM*PRICE;total2=84*PRICE2;printf(total=%d,total);.不会被替换=total=12*30;常量符号常量第7页/共86页8变量(Variables)其值可以改变的量称为变量变量有一个名字,即标识符变量在存储器中占据一定的存储单元变量占据存储空间的大小由其类型决定变量名表示存储变

4、量的存储单元地址程序使用变量名表示这个变量所占据的存储单元里存储的数据的值变量要“先定义,后使用”第8页/共86页9变量的存储34a变量名存储单元(地址)变量值第9页/共86页10整型(Integer)整型常量的表示方法整型变量整型数据在内存中的存放形式整型变量的类型整型变量的定义整型数据的溢出整型常量的类型第10页/共86页11整型常量的表示方法十进制(Decimal)例如,123、-456、0八进制(Octal)以0开头,不得含有8或9例如,0123、-0456错例,0138、-0912十六进制(Hexadecimal)以0 x或0X开头,用af或AF表示1015例如,0 x123、-0X

5、45、0 x3AB、-0 xabc第11页/共86页12整型数据在内存中的存放方式二进制形式举例,int i=50;/*int类型占2字节*/补码(Complement)正数:与原码一致,首位为0负数:绝对值取反加一,首位为1零:各位全为00 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0高地址字节低地址字节第12页/共86页13补码举例举例int i=-50;/*int类型占2字节*/0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 01 1 1 1 1 1 1 1 1 1 0 0 1 1 0 11 1 1 1 1 1 1 1 1 1 0 0 1 1 1 050的原码-

6、50的补码取反加一第13页/共86页14整型变量的分类按占用存储空间的大小划分基本整型 int短整型short int长整型long int按有无符号划分有符号signed无符号unsigned上述两种分类方式组合,可得到6种类型第14页/共86页15整数的长度整数的类型与长度short:占2字节(16bit)long:占4字节(32bit)int:占2或4字节(16或32bit)2Bytes=short int long=4Bytes若需要精确的长度,可选用short或long举例BC3.1:int长度为2Bytesgcc:int长度为4Bytes第15页/共86页16有符号数与无符号数有符

7、号数二进制补码表示,首位为符号位指定signed或缺省情况,即为有符号数无符号数没有符号位,只能表示非负数无符号数类型必须指定为unsigned若把负数赋值给无符号数,则把该负数的补码当作无符号数进行处理第16页/共86页17有符号数与无符号数举例void main()int i;unsigned j;i=j=-50;i=i/2;/*-25*/j=j/2;/*32743*/1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0-50的补码i,j/21 1 1 1 1 1 1 1 1 1 1 0 0 1 1 10 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1i/2-25的补

8、码j/232743的补码/原码第17页/共86页18整型数据的取值范围类 型长度(bit)取值范围signed short int16-215 215-1unsigned short int160 216-1signed int16 or 32-215(31)215(31)-1unsigned int16 or 320 216(32)-1signed long int32-231 231-1unsigned long int320 232-1第18页/共86页19整型变量的定义(Definition)定义形式int a,b;unsigned c;long d;unsigned short e;

9、变量的定义一般放在一个函数开头的声明部分,关于变量定义的具体内容在以后相关章节里详细介绍第19页/共86页20整型变量的定义与使用举例void main()int a;/*定义有符号基本整型变量a*/unsigned b;/*定义无符号基本整型变量b*/long c;/*定义有符号长整型变量c*/a=-23;/*a的值为-23*/b=45;/*b的值为45*/c=a+b;/*c的值为22*/第20页/共86页21整型数据的溢出(Overflow)溢出数据超出了变量能够存储的范围,造成数据丢失或数值改变等举例void main()int a=32767;a+;/*32768?*/0 1 1 1

10、1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0+132767的补码-32768的补码第21页/共86页22整型常量的类型常量的类型后缀(Suffix)l、L表示常量是一个长整型u、U表示常量是一个无符号整型数两种后缀可以一起使用举例123l长整型常数123456U无符号整型常数456789ul无符号长整型常数789101Lu无符号长整型常数101第22页/共86页23整型常量使用中的类型问题对整型变量赋值常量的值不要超过变量的取值范围直接使用常量带有l、L、u、U等后缀的整型常量一般用于函数调用不带有后缀的整型常量的类型,是根据其数

11、值大小所处的范围来确定的第23页/共86页24浮点型(Floating Point)浮点型常量的表示方法浮点型变量浮点型数据在内存中的存放形式浮点型变量的类型浮点型数据的舍入误差浮点型常数的类型第24页/共86页25浮点型常量的表示方法十进制小数形式由符号、数字和小数点(必须)组成整数和小数部分都可省略,但不能同时省略举例,12.3、-.123、123.、0.、.0指数形式由整数(或小数)、e(或E)、整数顺序组成e或E之前必须有数字,之后必须是整数举例,123.4e-5表示123.410-5错例,e1、12e、1.2e3.4、.e5、e第25页/共86页26规范化指数形式规范化指数形式类似于

12、“科学计数法”e或E之前的小数中,小数点前面有且仅有一个非零数字举例,123.456规范化形式,1.23456e2、1.23456E+002非规范化形式,123.456、12.3456e1、12345.6e-2、0.123456e3、12345600e-5第26页/共86页27浮点型数据在内存中的存放方式二进制规范化指数形式小数部分长度与能表示的精度有关指数部分长度与能表示的数值范围有关1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 0指数部分e小数部分f符号s第27页/共86页28几个特殊的数无穷大(Infinition)Inf举例,1.0/0.0-Inf举例,-1.0/0.0N

13、aN(Not a Number)NaN举例,sqrt(-1)/*开平方*/-NaN举例,-sqrt(-1)零(Zero)浮点数用特殊的形式表示零第28页/共86页29浮点型变量的类型分类单精度 float双精度 double长双精度 long double长度和取值范围类 型长度(bit)有效数字绝对值范围float326710-371038double64151610-30710308long double128181910-4931104932第29页/共86页30浮点型数据的舍入误差由于浮点型变量能够表示的有效数字有限,将有效位以外的数字舍去造成误差举例float a=123456.78

14、9e5,b;b=a+20;/*b=12345678920?*/printf(a=%fnb=%fn,a,b);运行结果 a=12345678848.000000 b=12345678848.000000n思考:1.0/3*3=?第30页/共86页31浮点型常量的类型类型后缀f、F表示常量是一个单精度型浮点数l、L表示常量是一个长双精度型浮点数无任何后缀的浮点型常量视作双精度型对浮点型变量赋值一个浮点型常量可以赋值给任何类型的浮点型变量根据变量类型截取常量的相应有效数字注意防止出现溢出第31页/共86页32字符型(Character)字符型常量字符型变量字符型数据在内存中的存放形式字符型数据的使用

15、方法字符串常量第32页/共86页33字符型常量单引号括起来的一个字符举例,a、A、1、?错例,abc、我转义字符以开头的特殊字符ddd 1到3位8进制数ASCII码代表的字符xhh 1到2位16进制数ASCII码代表的字符举例,n、t、123、x3A第33页/共86页34字符型变量字符型变量只能存放一个字符定义与使用void main()char c1,c2;/*定义字符型变量c1和c2*/c1=a;/*c1的值为a*/c2=2;/*c2的值为2*/第34页/共86页35字符型数据在内存中的存放形式一个字符型数据占一个字节的空间字符型数据以其ASCII码形式存放字符型数据的存放形式与只占一个字

16、节长度的整型数据完全相同01100001c1=a(ASCII=97)00110010c1=2(ASCII=50)第35页/共86页36字符型数据的使用方法可以把字符型数据视作一种长度为1字节的整型数据处理当使用字符型数据时,与使用这个字符的ASCII码(一个8位整数)是完全一样的字符型数据的用法与整型数据完全一样,包括运算、赋值、输入、输出等字符型数据使用过程中,同样需要注意溢出、符号等问题是字符还是整数,只有在输出时才有意义第36页/共86页37字符型数据使用举例void main()char c;int i,j;c=97;/*c=a*/i=c+20;/*i=117*/j=2;/*j=50*

17、/printf(%c,%dn,c,c);/*a,97*/第37页/共86页38字符型变量的符号字符型变量与整型变量一样,也分为有符号数与无符号数无符号字符unsigned char c;举例,表示一个班级的人数(=!=逻辑运算符!&|位运算符|&赋值运算符=+=-=*=/=%=下标运算符其他运算符()第45页/共86页46运算符的优先级(Precedence)优先级运算符的运算次序按优先级由高到低执行可以用圆括号()改变运算符的执行次序举例a+b*cd/e/*先算乘除,后算加减*/*乘除比加减优先级高*/(a+b)*(c-d)/e/*先算加减,后算乘除*/第46页/共86页47运算符的结合方向

18、(Associativity)结合方向当一个操作数两侧的运算符优先级相同时,运算次序按照结合方向的规定进行举例a+b-c/*+和-的结合方向都是从左向右*/*b先与+结合计算a+b,然后执行减法*/a=b=1/*=的结合方向是从右向左,先计算b=1*/第47页/共86页48运算符的结合方向规则单目运算符的结合方向都是“从右向左”!、+、-、+(正号)、-(负号)*(指针运算符)、&(地址运算符)sizeof、(type)赋值运算符的结合方向是“从右向左”三目运算符的结合方向是“从右向左”唯一的三目运算符:条件运算符?:其他运算符的结合方向都是“从左向右”第48页/共86页49优先级与结合方向总

19、结不同优先级的运算符,运算次序按优先级由高到低执行同一优先级的运算符,运算次序按结合方向的规定执行可以使用圆括号()明确运算次序圆括号()具有最高的优先级第49页/共86页50表达式(Expression)表达式的概念表达式的类型表达式求值算术运算符和算术表达式赋值运算符和赋值表达式逗号运算符和逗号表达式第50页/共86页51表达式的概念表达式用运算符把操作数连接起来,并符合C语言语法规则的式子操作数包括常量、变量、函数调用、表达式广义上,常量、变量、函数调用也可以看作属于表达式的范畴举例a+2.5*b-6/c+z-max(x,y)!(a1e-6)&(b=(c+sqrt(f)第51页/共86页

20、52表达式的类型表达式的类型表达式的值的类型取决于操作数的类型以及它们所做的运算举例a+2.5*b-6/c+z/*混合类型算术运算,值为double类型*/!(a 5*/b=(int)(x+y);/*b=6,(int)(6.5)*/c=(int)x;printf(x=%f,c=%dn,x,c);/*x=2.800000,c=2*/z=(float)d/e;/*z=2.5*/第58页/共86页59自增、自减运算符形式+i,-i使用i之前,先使i的值加/减1i+,i-使用i之后,再使i的值加/减1说明+i和-i的值是加/减1之后i的值i+和i-的值是加/减1之前i的值+和-只能用于变量,不能用于常

21、量和表达式+和-的结合方向是“自右向左”第59页/共86页60自增、自减运算符举例int i=3,j,a,b=1,c=2;j=+i;/*i=i+1,j=i,i=4,j=4*/j=i+;/*j=i,i=i+1,i=5,j=4*/j=-i+;/*-(i+),i=6,j=-5*/j=i+*2;/*(i+)*2,i=7,j=12*/a=(b+c)+;/*非法!*/a=34+;/*非法!*/j=+i+;/*非法!*/第60页/共86页61有关表达式使用的问题表达式中子表达式的求值顺序没有规定i=3;j=(i+)+(i+)+(i+);/*j=9?12?*/C编译程序自左向右尽可能多的将若干字符组合成一个运

22、算符、标识符、关键字i+j/*(i+)+j?i+(+j)?*/调用函数时,实参的求值顺序没有规定i=3;printf(%d,%dn,i,i+);/*3,3?4,3?*/第61页/共86页62赋值运算符(Assignment Operators)赋值运算符 =把右侧表达式的值赋给左侧的变量一般情况下,赋值运算符左侧只能是变量赋值运算符的优先级较低,“自右向左”结合运算符两侧类型不一致时,要进行类型转换注意“赋值”与“等于”的区别,例如i=i+2;复合赋值运算符=前加上算术运算符或位运算符,如+=、|=举例,z*=x+y;/*z=z*(x+y);*/第62页/共86页63赋值表达式赋值表达式赋值表

23、达式的值就是所赋的值运算符右侧的表达式可以是一个赋值表达式举例a=5;/*表达式的值为5*/a=b=3;/*a=(b=3)*/a=b=c=1;/*a=(b=(c=1)*/a=(b=4)+(c=3);/*b=4,c=3,a=7*/第63页/共86页64逗号运算符逗号运算符 ,exp1,exp2逗号运算符的优先级最低,“自左向右”结合逗号表达式的值是exp2的值exp1和exp2都可以又是“逗号表达式”把多个表达式组合成一个表达式使用举例x=(a=3,6*a)/*a=3,x=18*/x=a=3,6*a /*a=3,x=3*/第64页/共86页65基本输入输出头文件#include 输入输出函数字符

24、输出函数putchar字符输入函数getchar格式输出函数printf格式输入函数scanf字符串输出函数puts字符串输入函数gets第65页/共86页66字符输出函数putchar函数说明int putchar(int c);输出一个字符到标准输出设备参数说明int c 要输出的字符,可以是整数或字符,若超出字符型范围,则只使用低字节返回值若成功,返回输出字符的ASCII码值若失败,返回EOF(End of File)第66页/共86页67函数putchar举例(02-01.C)int c,i;putchar(a);/*输出a*/putchar(n);/*输出换行符*/putchar(1

25、01);/*输出e*/putchar(101);/*输出A*/c=1000;i=putchar(c);/*输出,i=232*/第67页/共86页68字符输入函数getchar函数说明int getchar(void);从标准输入设备输入一个字符需要输入回车后,函数才返回参数说明无参数返回值若成功,返回输入字符的ASCII码值若失败,返回EOF(End of File)第68页/共86页69函数getchar举例(02-02.C)int c;c=getchar();/*输入a后回车*/putchar(c);/*输出a*/c=getchar();/*是否需要输入?*/printf(c=%dn,c)

26、;/*输出c=?10*/c=getchar();/*输入abcd后回车*/putchar(c);/*输出a*/putchar(getchar();/*输出b*/第69页/共86页70格式输出函数printf函数说明int printf(char*format,args.);格式化输出若干任意类型数据参数说明char*format 格式控制字符串args 需要输出的数据列表,可以多个或没有返回值若成功,返回输出的字节数,包括换行符若失败,返回EOF(End of File)第70页/共86页71函数printf的参数说明格式字符串包括“格式说明”和“普通字符”“格式说明”由%和“格式字符”组成,

27、将输出数据按指定格式输出“普通字符”按原样输出输出列表需要输出的数据可以是变量、常量、表达式、函数调用等输出数据按顺序与“格式说明”对应输出第71页/共86页72函数printf的格式举例printf(a=%d b=%d,a,b);格式说明格式说明普通字符普通字符输出列表输出列表输出结果a=3 b=4第72页/共86页73格式字符格式字符说 明d,i有符号十进制整数,正数不输出符号o无符号八进制整数,不输出前导0 x,X无符号十六进制整数,不输出前导0 x或0Xu无符号十进制整数c转换为无符号字符型,以此为ASCII码输出一个字符s输出字符串,直到遇到0或达到指定宽度f小数形式单、双精度数,缺

28、省精度为6位小数e,E以规范化指数形式输出浮点数,缺省精度为6位小数g,G以f(F)和e(E)两种格式中较短的一种输出%输出一个%第73页/共86页74附加格式字符格式字符说 明h有符号或无符号短整型l有符号或无符号长整型L长双精度型m一个正整数,输出数据的最小宽度n一个正整数,输出的小数位数或字符串截取个数 分隔m和n-输出的数字或字符向左靠齐+输出的数字一直带符号,即正号也输出0输出的数字不满规定宽度时,用前导0填充 有符号数字如果没有输出符号,则前面加一个空格#八进制和十六进制数加前缀,浮点数格式也有所改变第74页/共86页75函数printf举例(02-03.C)int i=1234;

29、float f=-56.78;printf(i=%+6d,i);/*i=+1234*/printf(%c,i);/*/printf(%#08x,i);/*0 x0004d2*/printf(%10.5E,f);/*-5.67800E+01*/printf(%7.4f%,f);/*-56.7800%*/printf(%+6.3G,f);/*-56.8*/printf(%-6.3s,Hello);/*Hel*/第75页/共86页76格式输入函数scanf函数说明int scanf(char*format,addrs.);格式化输入若干任意类型数据参数说明char*format 格式控制字符串add

30、rs 需要输入的地址列表,可以有多个返回值返回输入并赋值的数据项的个数第76页/共86页77函数scanf使用说明“地址列表”中是变量的地址,而非变量scanf(%d,&i);关于输入格式格式字符串中的普通字符须按相应位置输入除字符型(%c)外,输入项之间用一个或多个空白字符分隔,包括空格、回车、制表符空白字符会作为%c对应的输入,如果需要输入下一个非空白字符,可以用%1s如规定了最大宽度,且输入数据超出宽度,则按宽度截取数据第77页/共86页78格式字符格式字符说 明d有符号十进制整数i有符号整数,可以是八进制(带前导0)或十六进制(带前导0 x或或0X)o有符号八进制整数,可以带或不带前导

31、0 x,X有符号十六进制整数,可以带或不带前导0 x或0Xu无符号十进制整数c输入一个字符,包括空白字符s输入无空白字符的字符串,不需要用括起来f,e,E,g,G浮点数,可以用小数形式或指数形式%输入一个%第78页/共86页79附加格式字符格式字符说 明h有符号或无符号短整型l有符号或无符号长整型或双精度型L长双精度型m一个正整数,输入数据的最大宽度*需要输入数据,但是在赋值时被跳过第79页/共86页80函数scanf举例(02-04.C)int i,j;char c;scanf(%d%d,&i,&j);/*2 3 or 23 or 23*/scanf(i=%d,j=%d,&i,&j);/*i

32、=2,j=3 or i=2,j=3*/scanf(%d%c%d,&i,&c,&j);/*2 a 3=i=2,c=,j出错*/*2a 3 =i=2,c=a,j=3*/第80页/共86页81简单的C程序设计例1:输入球体半径,求球的体积。例2:输入大写字母,转换为小写字母。第81页/共86页82例1:球体体积(02-05.C)#include#define PI 3.1415926void main()float r,V;printf(r=);scanf(%f,&r);V=4.0/3*PI*r*r*r;printf(V=%fn,V);第82页/共86页83例2:字母大小写转换(02-06.C)#include void main()char cup,clow;cup=getchar();clow=cup+a-A;printf(%cn,clow);第83页/共86页84作 业习题 3.6、3.9、3.10、3.12(3)(5)习题 4.5、4.6、4.9第84页/共86页85结束The End第85页/共86页C语言程序设计-第2章 数据类型、运算符和表达式86感谢您的观看。第86页/共86页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁