C语言的数据类型、运算符和表达式.doc_第1页
C语言的数据类型、运算符和表达式.doc_第2页
C语言的数据类型、运算符和表达式.doc_第3页
C语言的数据类型、运算符和表达式.doc_第4页
C语言的数据类型、运算符和表达式.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

数据类型、运算符和表达式一、C语言的基本数据类型 数据是程序处理的对象。C中将数据分为不同的数据类型,任何数据都属于某一种特定的数据类型。数据类型的作用有两个:一是指明为数据分配多大的存储空间和规定了数据的存储结构,进而规定了数据的取值范围;二是规定了数据所能进行的操作。C+数据类型基本类型字符型(char)空类型(void)整型短整型(short int)无符号整型(unsigned int)长整型(long int)基本整型(int)实型(浮点型)双精度型(double)单精度型(float)指针构造类型枚举(enum)联合(union)结构体(struct)数组 C的数据类型分为基本数据类型和构造类型。基本数据类型是系统定义的,用户可以直接使用。构造类型由用户自行定义。C的数据类型如图所示。C标准没有规定各类数据所占用内存位数。所以不同c编译系统的各类数据所占用内存位数是不一样的。上机使用时,应注意使用的c编译系统的具体规定。Turbo C基本数据类型、字宽和范围见表。类型所占位数数的范围signed char8-128127unsigned char80255signedint16-3276832767short int16-3276832767long int32-21474836482147483647unsigned int16065535unsigned short int16065535unsigned long int3204294967295float32约6位有效数字double64约12位有效数字 在Visual C+中:char:1 Byteint:4 Byteshort:2 Bytelong:4 Bytefloat:4 Bytedouble:8 Byte二、常量 常量:整型常量、实型常量、字符常量、字符串常量、符号常量1整型常量 C语言程序中可以使用十进制、八进制和十六进制来表示整型常量。 十进制整型常量,由正、负号和09十个数字组成,没有小数部分。 八进制:以数字0开头,后面跟07的数字序列,前面可以有正负号。 十六进制:以“0x”或“0X”开头,后跟09、af(大小写均可)的数字序列。 类型确定: 常量值后跟L或l表示长整数。 后跟U或u表示无符号整数。 后跟LU或lu表示无符号长整数。2实型常量 实型常量就是我们日常使用的带小数的常数,也叫浮点数。在C语言中,只有十进制表示。它有两种表示形式:小数表示法和指数表示法。 (1)小数表示法:它由整数和小数两部分组成。这两部分可以省略其中的一个部分,但不能同时都省略(小数点不能省略)。如:12.35、35、.689都是double(双精度浮点)型常量。 (2)指数表示法(科学表示法):方法是在小数表示法后面加字母E(或e)表示指数,指数部分可正可负,但必须是整数。如:1e-2、0.5E10、35.56E-3、7.e-2,它们都是double(双精度浮点)型常量。注意:用指数形式表示的浮点数必须有尾数,可以是整数或小数。如:e4和.e3这样的写法都是错误的。 实型常量缺省是double类型。单精度实型常量由数值后跟F或f来表示。3字符常量 由单引号括起来的一个字符。字符常量两侧的单引号是必不可少的。转义字符:以反斜线“”开头,后跟一个字符或用八进制、十六进制表示的ASCII码值组成。使用时同样要括在一对单引号内。转义字符表字符形式转义功能n回车换行(Enter)t水平制表符(即跳到下一个输出区)v竖向跳格b退格(Backspace)r回车a响铃反斜线字符()单引号字符()”双引号(”)00013位八进制数所代表的字符xbb12位十六进制数所代表的字符4字符串常量 由一对双引号括起来的一个或多个字符序列。字符串常量与字符常量的区别:一个字符常量在内存中存放,只占1 Byte,而字符串常量是用一个一维字符数组来存放的,即在内存中用多个连续的字节存放,每个字节放一个西文字符,或用2Byte放一个汉字,为了标志字符串的结束,系统自动在字符串的结尾加一个结束符(0),这里的0表示空字符的转义字符。注意:字符串长度与字符串在内存中占用的字节数是两个不同的概念。5符号常量 用一个标识符号代表的一个常量,这时,此标识符号与此常量是等价的。C语言中符号常量是用宏定义命令定义的。定义符号常量的格式如下: #define 标识符 常量编译程序在源程序中发现该标识符时,都用后面的常量来替换。三、变量 变量:在程序执行中其值可发生变化的量称为变量。1标识符 标识符是由程序员定义的单词,用它来命名程序中的一些实体对象(如符号常量名、变量名、函数名、类型名、数组名等)。 C语言中标识符的命名规则: (1)C语言规定标识符是由大小写英文字母、数字字符(09)和下划线(_)三种字符组成,且第一个字符必须为英文字母或下划线(以英文字母或下划线开头)。 (2)标识符区分大小写(大小写字母不一样)。 (3)长度任意(最少一个字符)。 (4)不能采用系统关键字(保留字)。 (5)标识符命名应以直观且易于拼读,即做到“见名知意”。2关键字 关键字是系统已定义的单词,它们在程序中有着不同的用途。不能用它们再作其他之用。下面列出常用的32个关键字,它们都是系统已定义的保留字,用户不能再用它们定义如符号常量名、变量名、函数名、类型名、数组名等。autobreakcasecharcontinueconstdefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedviodvolatilewhile 注意:这些关键字用的都是小写字母。3变量的定义 在C语言中,变量必须遵循“先定义、后使用”的原则,即每个变量在使用之前都要用变量定义语句将其声明为某种具体的数据类型。 变量定义语句的格式: 数据类型 变量名1 ,变量名2,; 其中:“数据类型”包括基本数据类型和构造数据类型两类。当一条变量定义语句定义多个变量时,变量名之间用逗号分割。4变量值 变量存在2个有用的值。一个是变量所表示的数据值,另一个是变量的地址值。 变量赋初值:在定义变量的同时给变量赋一个初始值。该变量被称为已初始化的变量。其方法是在变量名的后面跟一个等号和一个常量值。 变量赋值:C语言中对变量的赋值可以采用下面的方法: 变量名表达式;四、数组 数组是一种构造类型,它是数目固定、类型相同的若干个变量的有序集合。一个数组包含了若干个变量,每个变量称为一个元素,每个元素的类型都是相同的。1数组的定义 定义数组的格式如下: 数据类型 数组名下标1下标2; 其中:“数据类型”用于说明数组中每个元素的类型;数据名用于标识该数组;下标的个数表明数组的维数。个下标表示一维数组,个下标表示二维数组,以此类推。 定义数组时,“下标”必须是一个整型常量或整型常量表达式,不允许使用变量作为下标定义数组。C语言规定不能定义动态数组,即不能定义数组元素个数不定的数组。 C语言中数组元素在内存中是按行存放的,即元素是一行一行连续存放的,存完第一行后存第二行,然后存第三行,以此类推。2、数组元素的表示 C语言中,数组除了作为函数的参数外,不能整体引用,每次只能引用数组的一个元素。 数组元素与普通的变量一样,可出现在任何合法的C语言表达式中。 数组元素的表示格式如下: 数组名下标1下标2 这里的下标与数组定义时不同,它可以是整型常量,也可以是含有已复制变量的整型表达式。下标的含义也不同,引用数组元素时给出的下标值代表元素在数组中的排列序号。 C语言中的数组下标从0开始。C语言在编译和运行过程中不自动检测数组下标值是否越界。3数组的初始化 所谓数组的初始化就是在定义数组的同时,给数组元素赋初始值。其方法是等号“”后用一个初始化列表来实现。初始化列表是一个用一对花括号()括起来的若干个数据项组成的,多个数据项之间用逗号分隔。数组赋初值时,数组元素的个数要大于等于初始化列表中数据项的个数,否则编译时将出错。 初始化列表中提供的初值的个数不能多于数组元素的个数,但可少于数组元素的个数。当初始化列表中提供的初值个数少于数组元素的个数时,系统自动将后面的元素赋初值0。 当数组元素的初值全部列于初始化列表中时,可以省略对数组第一维长度的说明。4数组元素的赋值5字符数组 字符数组是指数组元素是char型的一种数组,字符数组也可以有一维、二维、三维和多维数组。一维数组可以用来存放一个字符串,多维字符数组可以用来存放多个字符串。 C语言中只提供了字符数据类型,没有提供字符串数据类型,因而,字符串的存取完全依赖于字符型一维数组,即字符串是借助于字符型一维数组来存取的。在存储字符串时,字符串结束标志“0”也占用一个字节的存储空间,但它不计入字符串的实际长度。 一个一维字符型数组并不一定是一个字符串,只有当一维字符型数组的最后一个元数为“0”时,它才构成字符串。例如: char str1=C,h,i,n,a; char str2=C,h,i,n,a,0;str1仅仅是一个长度为5的字符数组,不能把它作为一个字符串来使用。 当将一个一维字符数组作为一个字符串使用时,可以用字符串直接初始化该数组。如: char str6=“China”;也可以省略花括号,直接写成: char str6=”China”;这时,数组定义的长度应大于等于字符串中包括“0”在内的字符个数,即应大于等于字符串的长度加1。 在定义数组时,若省略长度说明,则编译程序将自动按字符串的个数对数组大小进行初始化。例如: char str=”China”;由于“China”是字符串常量,系统自动在其末尾加入“0”,因此系统默认数组str的大小为6。五、运算符和表达式 表达式是由运算符和运算对象组成的式子,运算对象就是在程序中要处理的各种数据。最简单的表达式就是一个常量或变量。在表达式中可以使用圆括号来改变优先级,任何一个表达式经过计算都应有一个确定的值和类型。 一个表达式的计算顺序是由运算符的优先级和结合性来决定的。 一个表达式的类型由运算符的种类和操作数(运算对象)的类型来决定。C语言规定,只有同类型的数据才进行计算,不同类型的数据要先转换成同一类型,然后才进行计算。(一)算术运算符和算术表达式1、基本算术运算符 +、-、*、/、(取余) 注意:%运算符只用于int型数据的运算,符号位取被除数的符号。另外,两个整数相除(/),结果为一整数;分子小于分母,结果为0。 优先级:*、/、同级,高于+、-。 结合性:自左至右2、算术表达式 算术表达式是由算术运算符和操作数组成的表达式。若表达式中的操作数类型不相同时,表达式的类型是各操作数中类型最高的类型。3、数据类型转换类型转换分为两种,一种是隐含转换(自动类型转换),另一种是强制转换。 强制类型转换:它是将某种类型强制性地转换为指定的类型。格式如下: (类型名)表达式(二)赋值运算符和赋值表达式1、赋值运算符 赋值运算符是一种能够改变变量值的运算符。C语言中赋值运算符分为:简单的赋值运算符和复合的赋值运算符。 简单赋值运算符只有一个:(赋值运算符 复合赋值运算符共有10个:十(加赋值)、一(减赋值)、*=(乘赋值)、=(除赋值)、=(求余赋值)、=(按位与赋值)、|=(按位或赋值)、=(按位异或赋值)、=(右移位赋值)。复合赋值运算符是先进行一种算术运算后,再进行赋值。注意:赋值运算符的左边只能是变量,不允许是表达式。结合性:从右至左的。2、赋值表达式 由赋值运算符和操作对象连接组成的式子称为赋值表达式。 赋值运算符的数据类型若不一致,则要进行类型转换。这也是一种强制类型转换,称为隐含类型转换。方式为:在赋值表达式中,当左值(赋值运算符左边的值)和右值(赋值运算符右边的值)类型不同时,一律将右值类型强制转换为左值的类型。(三)关系运算符和关系表达式1、关系运算符 C语言中的关系运算符共有6个: (大于)、(小于)、(大于等于)、(小于等于)、(等于)和!=(不等于) 前面4个的优先级高于后面的两个。2关系表达式 由关系运算符和操作数组成的表达式称为关系表达式。关系表达式的值是一个逻辑型的值,即只有2个值(真和假)。这里要说明的是,C语言是用1作为真,用0作为假。但是进行运算时,非0即认为真,0才认为假。而表达式的结果为真时,给出真值1。为假时,给出假值0。 关系运算符的结合性为:自左至右。 关系运算符的优先级低于算术运算符。(四)逻辑运算符和逻辑表达式1逻辑运算符 逻辑运算符共3个: 单目逻辑运算符:!(逻辑求反); 双目逻辑运算符:&(逻辑与)、|(逻辑或); 优先级:!&|2逻辑表达式 由逻辑运算符连接关系表达式或逻辑量组成的表达式称为逻辑表达式。逻辑表达式的值也是一个逻辑型,即只有真和假值。用1作为真,用0作为假。运算时,非0即认为真,0才认为假。而表达式的结果为真时,给出真值1,为假时,给出假值0。 在由&和|运算符组成的逻辑表达式中,c语言规定:只对能够确定整个表达式值所需要的最少数目的子表达式(操作数)进行计算。即在由若干个子表达式(或操作数)组成的一个逻辑表达式中,从左至右计算子表达式的值,当计算出一个子表达式的值便可确定整个逻辑表达式的值时,后面的子表达式就不再计算了。(五)自增、自减运算符 自增、自减运算符:+,-。 这两个运算符都是单目运算符,也是一种能够改变变量值的运算符。即它在计算表达式的值后,还将会改变其变量的值(使变量的值增1或减1)。 C语言的这两个运算符既可作用于一个变量的前面(前置运算),也可以作用于一个变量的后面(后置运算)。不论作用于一个变量的前面,还是后面,都会使被作用的变量值加1或减1。但作用于一个变量的前面,则该变量值先被加1或减1,然后该变量才被引用。反之,如作用于一个变量的后面,则先引用该变量,然后该变量值被加1或减1。注意:+、-运算符只能用于变量前或后 变量值与表达式值的区别。(六)位操作运算符及表达式 位操作运算符是用来进行二进制位运算的运算符,只针对基本数据类型中的char和int型数据中的二进制位进行操作,不能对其他类型的数据操作。 C语言提供了6种位运算符,按优先级从高到底排列为:运算符含义类型优先级结合性按位取反单目高从右向左左移位、右移位双目从左向右&按位与双目从左向右按位异或双目从左向右|按位或双目低从左向右 左移位:xn表示将x每一位向右平移n位。当x为有符号数时,左边空位补符号位上的值,即正数补0,负数补1。这种移位称为算术移位。当x为无符号数时,左边空位补0,这种移位称为逻辑移位。(七)条件运算符和条件表达式 条件运算符是C语言提供的一个仅有的三目运算符,该运算符需要3个操作数,它的格式如下: dl?d2:d3 其中:dl、d2和d3是3个操作数。 三目运算符的功能是先计算dl的值,根据该值进行判断。如果为非0,则计算d2的值,并把该值作为条件表达式的值。否则计算d3的值,并把该值作为条件表达式的值。而表达式的类型为d2和d3中类型高的一个类型。另外三目运算符结合性是自右至左。(八)逗号运算符和逗号表达式 C语言把逗号(,)也作为运算符。逗号运算符的功能是将多个表达式组成一个逗号表达式。逗号运算符的优先级是所有运算符中最低的一个运算符。逗号表达式运算规则是:从左至右依次计算各个表达式的值,最后计算的一个表达式的值和类型便是整个逗号表达式的值和类型。(九)sizeof运算符 sizeof是一个单目运算符,它的功能是返回变量名或给定的类型名所占内存字节的个数。其引用的格式为: sizeof变量名 或sizeof(类型名)(十)运算符的结合性和优先级六、数据的输入和输出 C语言中没有提供对数据的输入和输出语句,但提供了一些标准的输入输出函数,在编制的C语言程序中,对于数据的输入和输出,就是使用这些输入和输出标准函数来完成。本小节只介绍4个基本输入和输出函数,即getchar()、putchar()、printf()、和scanf()。(一)字符的输入输出函数getchar()/putchar() getchar()与putchar()是两个用于字符输入输出的标准函数。 1getchar( ) 函数 函数原型为:int getchar(void); getchar( )函数没有参数(即括号内不填写任何内容),执行该函数时,机器等待用户从标准输入设备输入一个字符并返回其值,按回车键结束输入。该返回值可以赋值给一个char型变量中,也可以直接作为一个操作数参与运算。 注意:getchar( )函数1次只能返回1个字符的值。 2putchar( )函数 函数原型为:int putchar(int c); putchar()函数带有一个char型参数(即在括号内填写一个char型表达式),执行该函数时,将括号内char型表达式的值,输出到标准输出设备(一般为显示器)的当前光标处。 说明:1.使用getchar()和putchar()函数应在源程序开头包含头文件stdio.h:#include stdio.h 2注意输入格式。getchar将键盘上的任何按键都读入,如果连续使用getchar输入字符,字符之间不能有分隔符,包括回车键。(二)格式化输入输出函数printf()/scanf() 这两个函数可以实现将表达式的值按照某种格式进行输入输出操作。 1格式输出函数printf() 按照指定的格式输出数据。其一般形式为:printf(格式控制字符串,输出值参数表); 其中,格式控制字符串是用双引号括起来的字符串,一般包括两个部分:格式转换说明符和需要原样输出的普通字符。输出值参数表中可以有多个输出值,之间用逗号分隔,也可以没有(当只输出一个字符串时)。 格式转换说明符是由“%”后加一个格式转换字符组成,用于指定个输出值参数的输出格式。中间可以插入l、m、.n等格式修饰符。 printf()中的格式转换符 转换字符作用d将对应参数转换成带符号的十进制形式输出整数o将对应参数转换成八进制无符号形式输出整数(不输出前导符0)x将对应参数转换成十六进制无符号形式输出整数(不输出前导符0x)u将对应参数转换成无符号十进制形式输出整数c将对应参数转换成无符号形式输出一个字符s输出字符串f将对应参数转换成小数形式输出单、双精度数,隐含输出6位小数e将对应参数转换成指数形式输出单、双精度数g选用%f或%e格式中输出宽度较短的一种格式%表示本身 普通字符:照原样输出。 格式控制字符串中格式转换说明的个数应与后面的参数个数相等,执行时,按格式转换说明的先后次序与后面的参数一一对应地进行格式转换。 printf()中格式修饰符格式修饰符作用l用于长整型数据,可加在格式符d, o, x, u前面最小域宽m(整数)指定输出项输出所占的列数(宽度)若m为正整数,当输出数据宽度小于m时,在域内向右对齐,左边多余位补空格;当输出数据宽度大于m时,按实际宽度全部输出;若m前有前导符0,则左边多

温馨提示

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

评论

0/150

提交评论