第三章基本数据类型和运算_第1页
第三章基本数据类型和运算_第2页
第三章基本数据类型和运算_第3页
第三章基本数据类型和运算_第4页
第三章基本数据类型和运算_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

第三章基本数据类型和运算第1页,课件共47页,创作于2023年2月3.1C的数据类型

1、基本类型:整型、实型、字符型、枚举型;2、构造类型:数组类型、结构体类型、共用体类型3、指针类型4、空类型C程序中的数据包括:

(1)常量—是程序执行前值已知,执行过程中不能被改变的数据。

(2)变量—是执行过程中可以被改变的数据。

(3)有返回值的函数—被看成变量。本章主要介绍基本数据类型第2页,课件共47页,创作于2023年2月3.2常量与变量

3.2.1标识符1、标识符的含义:在C语言中用于标识名字的有效字符序列。通常是指用户定义的符号常量、变量、数组和函数的名字等。C语言中没有标准标识符的概念,main可以看成为唯一的标准标识符,它被编译程序预定义为主函数的名字。第3页,课件共47页,创作于2023年2月2、标识符的组成规则:标识符是由字母(A~Z,a~z)、数字(0~9)和下划线组成的序列。C语言对标识符作如下规定:(1)标识符的第一个字符必须是字母或下划线。(2)如果说第一个字符后还有字符序列,则它就是字母、下划线或数字组成的序列。标识符中的字母大小写是有区别的。如标识符abc与标识符ABC是不相同。

第4页,课件共47页,创作于2023年2月例:

正确的标识符:program r0 file_2 a12 PIA_abab_

不正确的标识符:

yes? (含有不合法字符“?”)2from (第一个字符不允许为数字)yesno (标识符中不允许有空格)yes/no (含有不合法字符“/”)πr (“π”为不合法字符)Order.no(小数点(.)不是字母也不是数字)Up-to(减号(-)不是字母也不是数字)非法表示P->x(->不是字母也不是数字)Name[i]([]不是字母也不是数字)第5页,课件共47页,创作于2023年2月3.标识符的有效长度有效长度能够被编译程序识别并区别于其它标识符的那一部分,所包含的字符数目称为标识符的有效长度。C规定:标识符的有效长度为前31个字符,超过部分忽略。例:abcd……z12345 abcd……z123456789

被视为同一标识符,因后者中的6789已被忽略

前31个字符第6页,课件共47页,创作于2023年2月标识符的选择由程序自定,但是不能与保留字相同。另外,选择标识符时应遵循“见名知义”的原则,即所选择的标符应尽量与所要命名的对象有一定的联系,以助于识别和记忆。例:length(表示长度)

PI(表示圆周率π)

time (表示时间)

第7页,课件共47页,创作于2023年2月4.关键字关键字——是具有特定含义的,专门用来说明C语言的特定成分的一类单词。关键字又称为保留字,即被保留作为专门用途的特殊标识符。

C语言的关键字通常都是用小写字母表示,而大写字母通常代表一个常数。例:保留字int,不能写成Int

由于关键字有特定的用途,所以一般不用于其他场合。第8页,课件共47页,创作于2023年2月3.2.2常量和符号常量在程序运行过程中不能改变的量——常量,常量有类型的。用一个大写的标识符代表一个常量——符号常量。注意:符号常量在其作用域是不能改值的,也不能再赋值。如:#definePI3.1415926main(){floatr,s;scanf(“%f”,&r);s=PI*r*r;printf(“s=%f\n”,s);}第9页,课件共47页,创作于2023年2月符号常量的定义有三种方法:方法一:用编辑预处理指令#define定义一个符号常量;方法二:用const类型限定符定义一个符号常量;方法三:用枚举类型定义一组符号常量。第10页,课件共47页,创作于2023年2月3.2.3变量值可以改变的量称为变量。一个变量有一个名字,在内存中占有一定的单元,该单元中存放该变量的值。注意:变量名和变量值是两个不同的概念。

12x变量名变量值存储单元第11页,课件共47页,创作于2023年2月变量与标识符的命名规则一样。大写字母与小写字母表示不同的变量。取变量名时注意做到“见名知意”,但有时为了方便,取简单的标识符(如a,b)做为变量名。C语言中要求所有变量在使用之前先定义。第12页,课件共47页,创作于2023年2月3.3整型数据

3.3.1整型常量的表示方法整型常量就是整常数,它可以用三种形式表示:(1)十进制整数:

123,-234,0(2)八进制整数:以数字0开头的整数是八进制数。如0123代表八进制数123,-0234代表八进制数-234。(3)十六进制整数:以0x开头的整数是十六进制数。如0x123代表十六进制数123,-0x23代表十六进制数23。第13页,课件共47页,创作于2023年2月

3.3.2整型变量1.整型数据在内存中的存放形式整型数据在内存中通常占两个字节。所有数据在内存中都用补码形式存放。两个字节中,第一个字节的最高位(首位)作为数据的符号位:正数为0,负数为1。2.整型变量的分类整型变量的基本类型符是int,可以定义类型:

(1)基本类型:int

占2个字节,-32768—32767第14页,课件共47页,创作于2023年2月

(2)短整型:shortint或short

占2个字节,-32768—32767(3)长整型:longint或long

占4个字节,-2147483648—147483648

(4)有符号整数:signed

占2个字节,-32768—32767

(5)无符号整数:unsigned

·无符号短整型,占2个字节,0—65535·无符号长整型,占4个字节0—4294967295第15页,课件共47页,创作于2023年2月3.整型变量的定义对变量的定义,一般是放在一个函数的开头部分的声明部分中。格式:

类型变量1,变量2,…,变量n;说明:变量名之间用逗号“,”隔开。一个说明语句结束时,必须有分号“;”。例:inta,b,c;

shortx,y;unsignedd;第16页,课件共47页,创作于2023年2月4.整型数据的溢出当数据大于所定义的类型范围时,就产生溢出。P44产生整数溢出的后果:

对于常量,编译时产生语法错误;对于变量,将得不到正确的结果。程序中如何避免整数溢出:

为避免溢出或类型转换的需要,应根据具体情况将整数相应地表示为长整数、无符号整数或无符号长整数。方法是:对于常量,加整数后缀(U、u、L、l);对于变量,则说明为long,unsigned,unsignedlong类型第17页,课件共47页,创作于2023年2月

3.4

实型数据3.4.1实型常量的表示法⑴小数形式:由数字、数符和小数点组成(必须有小数点)。例:0.123,-123.,.123⑵指数形式:数字部分e指数部分。例:123e3,1.2e5注意:字母e(或E)之前必须有数字,e后面指数必须是整数(1~3位)。如:e3、2.1e3.5、e是不合法的指数形式第18页,课件共47页,创作于2023年2月一般形式为:

[±][整数部分][·][小数部分][e±n]

注意:(1)一个浮点数可以无整数部分或小数部分,但不能二者均无。(2)一个浮点数可以无小数点部分或指数部分,但不能二者均无。无论哪种情况,都必须有小数点。n称为阶码,n为1~3位十进制无符号整型常量(可以有前置0).n前面的“+”和整数部分前面的“+”可以省略。第19页,课件共47页,创作于2023年2月3.4.2实型变量1、实型数据在内存中的存放形式一般占4个字节,看教材46页。2、实型变量的分类

C语言中实型变量分为单精度(float)、双精度(double)、长双精度(longdouble)三类,对于第3类长双精度用的较少,有关规定请看教材46页表3.2。3、实型数据的舍入误差注意:实型变量提供的有效数字是有限的。第20页,课件共47页,创作于2023年2月3.4.3实型常量的类型

实型常量的类型通常也有上述三种,要特别注意实型数字的有效数字位问题。看下例:main(){floata;doubleb;a=111111.111;b=111111.111;printf(“a=%f\nb=%f\n”,a,b);}运行结果:a=111111.109375b=111111.111000第21页,课件共47页,创作于2023年2月3.5字符型数据3.5.1字符常量字符型数据是用单引号括起来的单个字符,形式为:‘字符’。字符常数是一个整数,值为所用计算机字符集中一个字符的ASCII编码值(称为字符码),机器字符集一般为ASCII字符集。‘字符’—单引号内的字符有两种表示方法:(1)用字符的图形符号表示一个字符,形式为:‘字符的图形符号’。(2)用转义序列表示一个字符,形式为:‘转义序列’。转义序列是由反斜线(\)开头的一个特殊字符串,每个转义序列表示字符集中的一个字符。如教材48页表3.3。第22页,课件共47页,创作于2023年2月看下面的例子:main(){printf(“abc\tde\rf\tg\n”);printf(“h\ti\b\bjk”);}在打印机上显示:fabcgdehjik在屏幕上显示:fgdehjk第23页,课件共47页,创作于2023年2月3.5.2字符变量

字符型变量只能放一个字符。定义charc1,c2;

赋值c1='a';c2='b';3.5.3字符数据存储形式字符数据是以ASCII码存储的,它的存储形式与整数的存储形式相类似,即c1变量存储的是ASCII码97,也就是说下面两个语句是等价的:c1='a’;和c1=97;01110000它们在内存的存储情况:第24页,课件共47页,创作于2023年2月看下面两个例子:main(){charc1,c2;c1=97;c2=98;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);}运行结果为:ab9798main(){charc1,c2;c1=‘a’;c2=‘b’;c1=c1-32;c2=c2-32;printf(“%c%c\n”,c1,c2);}运行结果为:AB考虑:若c1是整型,c2是字符型,结果如何?第25页,课件共47页,创作于2023年2月字符串常量:

是用一对双撇号括起来的字符序列,其形式为:“字符序列”例:“Thisisapen”一个字符串可以包含0个字符,表示为“”,称为空串。字符串在机内存储时,系统在其末尾添加了一个‘\0’字符;‘\0’是字符串结束标志,以便确定字符串的实际长度,即字符串的存储长度要比实际长度大1。所以,空串的存储长度为1而不是0。

3.5.4字符串常量第26页,课件共47页,创作于2023年2月注意:(1)“a”和‘a’是两个不同的概念:字符串“a”是存储长度为2的一个字符串。字符‘a’是一个字符,实际上是一个值为ASCII码的整数。(2)当双引号作为字符串的组成字符时,必须用转义序列表示。例:“3’40\””(3)当单引号作为字符串的组成字符时,可以用图形符号表示。例:“It’sapen”

从存储结构上讲,字符串是一个字符数组。第27页,课件共47页,创作于2023年2月语法规定:

如果字符串常数一行写不下,则有两种方法可以将行扩展到下一行:一种方法是在行的末尾加续行符“\”。

如:printf(“#Hello!\howareyou?”);另一种方法是依靠字符串连接功能

如:printf(“Hello!”“howareyou?”);

第28页,课件共47页,创作于2023年2月可以在定义变量的同时进行变量初始化。例:inta=3;/*指定a为整型变量,初值为3*/floatf=3.56;charc='a';说明:1.可以给被定义的变量的一部分赋初值。

inta,b,c=5;2.可以对几个变量赋以同一个值。但不能写成:

inta=b=c=3;应该写成inta=3,b=3,c=3;3.变量赋初值是在程序运行时完成的。

inta=3;相当于inta;a=3;两条语句

3.6变量赋初值第29页,课件共47页,创作于2023年2月整型、实型(单、双精度)、字符型数据间可以混合运算。例如:

10+'a'+1.5-8765.1234*'b'

高double←float↑long↑unsigned↑

低int←char,short

为必定的转换当运算对象为不同类型时转换的方向

3.7各类数值型数据间的混合运算第30页,课件共47页,创作于2023年2月3.8

算术运算符和算术表达式3.8.1运算符的种类1)算术运算符+-*/%2)关系运算符><==>=<=!=3)逻辑运算符!&&||4)位运算符《》~|^&5)赋值运算符=及其扩展赋值运算符6)条件运算符?:7)逗号运算符,8)指针运算符*&9)求字节数运算符sizeof10)强制类型转换运算符(类型)11)分量运算符·—>12)下标运算符[]第31页,课件共47页,创作于2023年2月3.8.2算术运算符和算术表达式1.基本算术运算符+-*/%说明:(1)两个整数相除结果为整数,如5/3=1,如果除数或被除数中有一个为负值,多数机器采取“向零取整”的方法。(2)参与运算的两个数中有一个为实数,则结果为double型。例:6/2.0的结果为3.0(3)模运算符(或称求余运算符)两侧的运算量均为整型量。第32页,课件共47页,创作于2023年2月2.算术表达式和运算符的优先级与结合性①用算术运算符和括号将运算对象(也称操作数)连接起来,符合C语法规则的式子,称C算术表达式。②表达式求值时,按运算符的优先级别依次执行。若优先次序相同,则按“自左至右”的结合方向计算。例:

2+12/6*5%3+‘A’第33页,课件共47页,创作于2023年2月3.强制类型转换运算符可以利用强制类型转换运算符将一个表达式转换成所需类型。

一般形式:(类型名)(表达式)如:(int)x(int)(x+y)

注意:用此方法得到的类型是中间结果,它并不改变变量原先的类型。第34页,课件共47页,创作于2023年2月4.自增、自减运算符++i,--i:

在使用i之前,先使i的值加(减)1,即先改值后用。i++,i--:

在使用i之后,再使i的值加(减)1,即先用后改值说明:①自增、自减运算符只能用于变量,而不能用于常量或表达式。②++和--的结合方向是“从右至左”。

-i++→-(i++)③C语言的表达式中++,--的出现,很容易导致错误。第35页,课件共47页,创作于2023年2月例:k=(i++)+(i++)+(i++)

若i的初值为3,在Tc,Msc系统中k=9,i=6例:k=(++i)+(++i)+(++i)

若i的初值为3,在Tc,Msc系统中k=18,i=6例:printf(“%d,%d”,i,i++);若i的初值为3,在上述系统中结果为:

4,3第36页,课件共47页,创作于2023年2月

3.9赋值运算符和赋值表达式赋值运算符符号:=

作用:将一个数据赋给一个变量。2.赋值时的类型转换问题(1)将实型数据(包括单、双精度)赋给整型变量时,舍弃实数的小数部分。(2)整数赋值给单、双精度变量时,数值不变,以浮点数形式表示。第37页,课件共47页,创作于2023年2月(3)字符型数据赋给整型变量时,放在整型变量的低8位,分两种情况:

①若所用系统将字符处理为无符号的量或对unsignedchar型变量赋值,则将字符的8位放到整型变量的低8位,高8位补0。

②若系统将字符处理为带符号的量,若字符最高位为0,则整型变量高8位补0,相反,则全补1。这称为“符号扩展”,这样做的目的是使数值保持不变。看教材60页图3.11。第38页,课件共47页,创作于2023年2月(4)带符号的整型数据(int型)赋给长整型变量要进行符号扩展,int数为正值,则longint型变量的高16位补0,相反补1,整型数的16位送到long型的低16位。(保持数据不变)longint型数值赋给int型变量时,只需将longint的低16位放入int型变量中(即截断,有效的只有低16位)。看书教材60页图3.13。第39页,课件共47页,创作于2023年2月

(5)unsignedint型数据赋给longint型变量只需高位补0即可。若将一个unsigned类型数据赋给一个占字节相同的整型变量,内容原封不动送到非unsigned型变量中,但可能会因超范围而出错。

(6)将非unsigned型数据赋给长度相同的unsigned型变量,也是原样照赋。第40页,课件共47页,创作于2023年2月3.复合的赋值运算符(1)复合运算符:10种

+=,-=,*=,/=,%=,《=,》=,&=,^=,|=例如:a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3(2)意义:简化程序,使程序精炼。提高编译效率。第41页,课件共47页,创作于2023年2月4.赋值表达式(1)概念:由赋值运算符将一个变量和一个表达式连接起来的式子。(2)一般形式:

<变量><赋值运算符><表达式>求解过程:将赋值运算符右侧的“表达式”的值赋给左侧的变量,赋值表达式的值就是被赋值的变量的值。例a=b=c=5a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)a+=a-=a*a(a=12)第42页,课件共47页,创作于2023年2月3.10逗号运算符和逗号表达式1)逗号运算符又称顺序求值运算符2)一般形式:表达式1,表达式23)求解过程:

先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值。例:a=3*5,a*4a的值为15,表达式的值为60x=(a=3

温馨提示

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

评论

0/150

提交评论