第三章 基本数据类型、运算符与表达式_第1页
第三章 基本数据类型、运算符与表达式_第2页
第三章 基本数据类型、运算符与表达式_第3页
第三章 基本数据类型、运算符与表达式_第4页
第三章 基本数据类型、运算符与表达式_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计主讲人:******

第三章基本数据类型、运算符与表达式

C语言是一种强类型语言,程序在处理数据之前,要求数据具有明确的数据类型。所谓数据类型是按被定义变量的性质、表示形式、占据存储空间的多少、构造特点来划分的。C语言支持的数据类型非常丰富,它包括:基本数据类型,构造数据类型,指针类型,空类型及定义类型五大类。3.1

C语言的数据类型

3.1

C语言的数据类型

C语言数据类型基本数据类型导出数据类型double(双精度浮点型)long(长整型)char(字符类型)整型short(短整型)int(整型)浮点型float(单精度浮点型)longdouble(长双精度浮点型)void类型用户定制类型T*(指针类型)struct{…}(结构体类型)union{…}(共用体类型)文件类型enum(枚举)函数类型构造类型T[…](数组类型)1.标识符标识符用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。简单地说,标识符就是一个名字。C

规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。3.2标识符与关键字

说明:(1)标准C不限制标识符的长度(字符个数),但它受各种版本的C

语言编译系统限制,同时也受到具体机器的限制。例如在某版本C

中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。

3.2标识符与关键字

(2)在标识符中,大小写是有区别的。(3)标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量有相应的意义,以便阅读理解,作到“顾名思义”。

(4)不能与c编译系统已经预定义的、具有特殊用途的保留标识符(即关键字)同名。3.2标识符与关键字

2.关键字关键字就是C语言中已经被赋予特定意义的一些单词。不可以把这类词作为名字来用。C的关键字有:autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticsizofstructswitchtypedefunionunsignedvoidvolatilewhile3.2标识符与关键字

C语言中存在着两种表征数据的形式:常量和变量。C语言中,值不能被改变并且不用存放在内存中的量称为常量。常量与数据类型结合起来分类。例如,整型常量、实型常量、字符型常量、字符串常量和符号常量。在编程过程中,常量是可以不经说明而直接引用的。3.3常量

1.整型常量的表示十进制整常数:十进制整常数没有前缀。其数码为0~9。八进制整常数:八进制整常数必须以0开头,即以0作为八进制数的前缀。数码取值为0~7。八进制数通常是无符号数。十六进制整常数:十六进制整常数的前缀为0X或0x。其数码取值为0-9,A-F或a-f。3.3.1整型常量

2.整型常数的后缀长整型数是用后缀“L”或“l”整型的无符号数的后缀为“U”或“u”3.3.1整型常量

实型常量的表示十进制数形式:它是数码0-9和小数点组成(必须有小数点)。指数形式:指数表示法又称科学记数法。该表示形式由十进制数,加阶码标志“e”或“E”组成。3.3.2实型常量

1.一般字符型常量字符常量是用单引号括起来的一个字符。特点:(1)字符常量只能用单引号括起来,不能用双引号或其它括号。(2)字符常量只能是单个字符,不能是字符串。(3)字符可以是字符集中任意字符。3.3.3字符型常量

2.转义字符转义字符是一种特殊的字符常量。转义字符以反斜线"\"开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。3.3.3字符型常量

常用的转义字符及其含义3.3.3字符型常量

转义字符转义字符的意义ASCII代码

\n回车换行10

\t横向跳到下一制表位置9

\b退格8

\r回车13

\f走纸换页12

\\反斜线符"\"92

\'单引号符39\”双引号符34

\a鸣铃7

\ddd1~3位八进制数所代表的字符

\xhh1~2位十六进制数所代表的字符字符串常量是由一对双引号括起的字符序列。双引号(“”)作为字符串常量的定界符,因此,在字符串中表示双引号应使用转义序列’\”’来表示。3.3.4字符串常量

字符串常量和字符常量的区别:(1)字符常量由单引号括起来,字符串常量由双引号括起来。(2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。3.3.4字符串常量

(3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。(4)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。3.3.4字符串常量

符号常量,用标示符代表一个常量。在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。用标识符代表一个常量,称为符号常量。符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值。符号常量在使用之前必须先定义,其一般形式为:#define<符号常量名><常量>3.3.5符号常量

3.4变量

变量,其值可以改变的量称为变量。变量具有三要素:名字、类型和值。3.4.1变量的定义

变量在使用之前必须进行定义——即为每个变量取一个名称(变量名),同时规定它的数据类型,以便编译时根据数据类型分配存储空间。变量定义的一般格式:

<数据类型><变量名表>

1.变量初始化在程序中常常需要对变量赋初值,以便使用变量。语言程序中可有多种方法为变量提供初值。本小节先介绍在作变量定义的同时给变量赋以初值的方法。这种方法称为初始化。在变量定义中赋初值的一般形式为:

类型说明符变量1=值1,变量2=值2,……;3.4.2变量的初始化

【例】:inta=68;/*指定a为整型变量,初值为68*/floatb,c,d=7.9;/*b,c,d为单精度实型变量,只对d初始化,其值为7.9。*/3.4.2变量的初始化

2.变量的赋值赋值是将一个数值送给一个变量,改变这个变量已有的值为所赋的值,变量内保存的是最后一次赋的值。赋值是使用赋值表达式进行的。赋初值是在定义或说明变量时,将一个数值送给变量的,使变量被定义后便有值,直到被改变为止。3.4.2变量的初始化

【例】:变量的定义和赋值#include<stdio.h>main(){inta;charc=’b’,bell=’\007’;floatx=3.25;a=65;printf(“%c,%c\n”,c,c-1);printf(“%d,%c,%c\n”,c,a,bell);printf(“%.2f,%f\n”,x,x+x);}3.4.2变量的初始化

3.变量的地址在使用一个变量之前,要先对它进行定义,以便编译程序为其分配内存单元。也就是说,在定义了一个变量后,在内存中会分配相应的存储单元,将变量的值存储到该单元中。3.4.2变量的初始化

C语言中运算符和表达式数量之多,丰富的运算符和表达式使C语言功能十分完善。除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。3.5运算符及其表达式1.运算符(1)算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。3.5运算符及其表达式(2)关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。(3)逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。(4)位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(!)、位异或(^)、左移(<<)、右移(>>)六种。3.5运算符及其表达式(5)赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。(6)条件运算符:这是一个三目运算符,用于条件求值(?:)。(7)逗号运算符:用于把若干表达式组合成一个表达式(,)。3.5运算符及其表达式(7)逗号运算符:用于把若干表达式组合成一个表达式(,)。(8)指针运算符:用于取内容(*)和取地址(&)二种运算。(9)求字节数运算符:用于计算数据类型所占的字节数(sizeof)。(10)强制类型转换运算符:强制进行数据类型转换((类型))。3.5运算符及其表达式(11)分量运算符:用于存取结构和联合中的成员(→,.),其优先级在所有运算符中是最高的。(12)下标运算符:用于数组下标的表示([]).(13)其他运算符:如函数调用运算符(())。3.5运算符及其表达式(11)分量运算符:用于存取结构和联合中的成员(→,.),其优先级在所有运算符中是最高的。(12)下标运算符:用于数组下标的表示([]).(13)其他运算符:如函数调用运算符(())。3.5运算符及其表达式

2.表达式表达式是使用运算符和圆括号将操作数连接起来构成的式子。C语言的操作数包括常量、变量、函数值等。

3.简单语句

C语言中,在表达式的末尾加上一个分号“;”就构成了简单语句。在程序设计过程中要避免使用无意义的简单语句。3.5运算符及其表达式3.5.1算术运算符和算术表达式

基本的算术运算符操作符作用运算目数结合方向例子+加双目加法,一目取正加自左至右,取正自右至左a+b,5+2,+5-减双目减法,一目取负减自左至右,取负自右至左5-3,x-y,-5*乘双目运算自左至右x*y,3*5/除双目运算自左至右x/y,20/5%取模双目运算自左至右5%3,-7%3--减1单目运算自右至左++i,i++++加1单目运算自右至左--i,i--

1.赋值运算符程序设计中,赋值运算符是使用频繁的运算符。所谓,赋值就是将一个数据值存储到一个变量中,赋值运算符记为“=”。

2.赋值表达式由赋值运算符“=”将一个变量和表达式连接的式子称为赋值表达式。其一般形式为:变量=表达式3.5.2赋值运算符和赋值表达式说明:(1)在赋值运算符的左边的量必须是变量,不能是常量或用上述运算符结合起来的表达式。(2)赋值表达式也应该有值,它的值就是被赋值的变量的值,其结果类型由赋值运算符“左值”的类型决定。3.5.2赋值运算符和赋值表达式说明:(3)赋值运算符具有右结合性赋值运算可以连续进行。(4)赋值运算符的优先级低于算术运算符的优先级。(5)将赋值表达式作为表达式的一种,不仅可以出现在赋值语句中,而且可以出现在其他语句(输出语句,循环语句)中。3.5.2赋值运算符和赋值表达式

3.复合赋值运算符除了上述基本的赋值运算符外,C语言还提供了另外十种复合运算符。它们就是在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。这些运算符把“运算”和“赋值”两个操作结合在一起,作为一个复合运算符来使用,称之为复合赋值运算符。3.5.2赋值运算符和赋值表达式构成复合赋值表达式的一般形式为:

变量双目运算符=表达式它等效于:

变量=变量双目运算符表达式3.5.2赋值运算符和赋值表达式【例】:

x*=y+38 等价于x=x*(y+38)

i%=j

等价于i=i%j

a+=695

等价于a=a+6953.5.2赋值运算符和赋值表达式3.5.3关系运算符和关系表达式

1.关系运算符及其优先次序操作符作用运算目数结合方向<小于双目加法自左至右<=小于或等于双目减法自左至右>大于双目运算自左至右>=大于或等于双目运算自左至右==等于双目运算自左至右!=不等于双目运算自左至右3.5.3关系运算符和关系表达式

2.关系表达式用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的,称为关系表达式。关系表达式的一般形式为:表达式关系运算符表达式3.5.4逻辑运算符和逻辑表达式1.逻辑运算符C语言中提供了三种逻辑运算符:

&&与运算

||或运算

!非运算3.5.4逻辑运算符和逻辑表达式逻辑运算的真值表AB!a!bA&&bA||b真真假假真真真假假真假真假真真假假真假假真真假假3.5.5条件运算符和条件表达式

条件运算符为?和:,它是一个三目运算符,即有三个参与运算的量。条件表达式的一般形式为:

表达式1?表达式2:表达式3

其求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。3.5.6逗号运算符和逗号表达式

在C语言中,逗号“,”的用途主要有两种:一种是作为运算符,一种是作为分隔符。用逗号把两个表达式连接起来,称为逗号表达式(又称顺序求值运算符)。逗号运算符的优先级别最低。用逗号把两个表达式连接起来组成一个表达式,称为逗号表达式。3.5.6逗号运算符和逗号表达式

逗号作为运算符,其一般形式为:

表达式1,表达式2

其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。3.5.7位运算

TurboC中按位运算符操作符作用&位逻辑与|位逻辑或^位逻辑异或~位逻辑反<<左移>>右移3.5.8指针运算符、sizeof运算符

1.指针运算符指针运算符包括用于取内容(*)和取地址(&)二种运算符。“*”和“&”运算符都是单目运算符。&运算符用来取出其运算分量的地址。*运算符是&的逆运算,它把运算分量(即指针量)所指向的内存单元中的内容取出来。3.5.8指针运算符、sizeof运算符

【例】:inta,b,*p;p=&a;/*把变量a所在内存单元的地址送给p(指针变量)*/b=*p;/*把p所指单元的内容(即a的值)赋给变量b*/3.6运算符的优先级和结合性

运算符的优先级和结合性优先级运算符运算符类型运算对象的个数结合性1()[]->.基本1个

单目运算符

温馨提示

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

评论

0/150

提交评论