第2章C语言基础知识.docx
《第2章C语言基础知识.docx》由会员分享,可在线阅读,更多相关《第2章C语言基础知识.docx(22页珍藏版)》请在课桌文档上搜索。
1、第2章C语言基础知识【本章要点】 C语言的基本数据类型 C语言的标识符、变量和常量 C语言程序的运算符与表达式【学习目标】 掌握C语言的基本数据类型的特点及应用 掌握C语言的标识符、常量和变量的基本知识及应用 掌握C语言的各种运算符及表达式的应用2.1 C语言的数据类型数据类型是数据的基本属性,描述的是数据的存储格式和运算规则。不同类型的数据在内存中所需存储空间的大小是不同的,能够支持的运算、相应的运算规则也不同,因而在学习C程序时必须准确地掌握和运用数据的数据类型。L整型(int)基本类型实型(浮点型)I字符型(Char)C语言的数据类型分类如图2-1所示。J单精度型(float)Y双精度型
2、(double)J长双精度型(longdouble)数组类型数据类型结构体类型(StrUCt)构造类型V共用体类型(Union)I枚举类型(enum)空类型(Void)I指针类型(*)图2-1C语言的数据类型2.1.1 整型数据1 .基本概念整型数据就是整数,整数又分为两大类:有符号型和无符号型。有符号的整数既可以是正数,也可以是负数;不带符号位(只包含0和正数)的整数为无符号整数。整型(int)数据类型可以用4种修饰符的搭配来描述:Signed(有符号)、UnSigned(无符号)、Iong(长型)和ShOrt(短型)。VisualC+6.0环境下整型数据的长度及取值范围如表2-1所示。表2
3、-1整型数据的长度及取值范围数据类型占用字节取值范围整型(int)4有符号整型(Signedint)4无符号整型(UnSignedint)40短整型(Shortint)2-768767有符号短整型(Signedshortin()2-768767无符号短整型(UnSignedshortin()2065535长整型(Iongint)4有符号长整型(Signedlongint)4无符号长整型(UnSignedlongint)40在C语言中,对整型数据类型的说明可以使用简写方式,如表2-2所示。表2-2整型数据的简写方式完整方式简写方式ShOrtint、signedshortintshortsigne
4、dintintlongintsignedlongintlongunsignedshortintunsignedshortunsignedintunsignedunsignedlongintunsignedlong2 .整型数据的二进制表示对于整型数据,其数值是以补码的形式存储的。正数的补码与其二进制原码相同。例如整数23,其二进制形式的存储结构如图2-2所示。(在ViSUaIC+6.0环境下,整型数据占4个字节的存储单元,每个字节含8个位。)00000000000000000000000000010111t_最高位为符号位,为0表示正数,为1表示负数图2-2整数23的存储结构若为负整数,将该数
5、绝对值的二进制形式按位取反再加1便可得到该数的补码。例如,求-23的补码的步骤如下。第一步,求出23的二进制形式:第二步,按位取反:第三步,再加1:2.1.2 浮点型数据1 .基本概念在计算机的运算过程中,整型数据并不能适用于所有的应用,有时也需要存储带小数的数,这类数可以用浮点型数据(即浮点数)来表示。浮点数的小数点位置是不固定的,可以浮动。C语言提供了三种不同的浮点格式。 float:单精度浮点数。 double:双精度浮点数。 longdouble:长双精度浮点数。当精度要求不严格时,比如某人的工资,需要保留两位小数,float类型就是很恰当的类型。double类型提供更高的精度,对于绝
6、大多数用户来说己经足够用了。longdouble类型支持极高精度的要求,但很少会用到。2 .浮点型数据的二进制表示浮点型数据与整型数据的存储方式不同,浮点型数据是按照指数形式存储的。例如浮点数58.625的指数形式为58.625=5.8625x0l其中,5.8625称为尾数,10的嘉次1称为指数。计算机在存储浮点数的时候,也要将十进制数转化为二进制数来表示,转化方法是将浮点数分为整数部分和纯小数部分,再将整数部分和纯小数部分分别转化为二进制数。浮点数的存储结构如图2-3所示,分为3个部分:符号位、指数位和尾数。符号位表示数值的正负;指数位用于计算阶码,代表2的幕次;尾数位为有效小数位数。尾数部
7、分占的位数越多,浮点数的有效位越多;指数部分占的位数越多,表示数的范围就越大。符号位I指数位J尾数SEM图2-3浮点数的存储结构例如,浮点数58.625的二进制存储格式如图24所示。SEM01000000111010010000000000000000图2-4浮点数58.625的二进制存储格式二提示: 对于float类型的浮点数,指数位占8位,尾数位占23位。 对于double类型的浮点数,指数位占11位,尾数位占52位。3 .浮点型数据的长度与取值范围单精度浮点数和双精度浮点数由于指数和尾数的位数不同,它们的取值范围也有所不同。浮点型数据的长度及取值范围如表2-3所示。表2-3浮点型数据的长
8、度及取值范围类型说明占用字节有效位取值范围float单精度浮点型467-3.4x0383.41038double双精度浮点型81516-1.7103081.71038longdouble长双精度浮点型161819-1.2xlOf12x1049【实例2-1C语言浮点数精度示例。iincludevoidmain()floatx;*X为单精度类型变量*/doubley;*Y为双精度类型变量*/X=.1234;/*赋予X值*/y=.1234;/*赋予V值*/printf(nx=%fn,x);/*输出X的值*/printf(y=fnu,y);/*输出y的值*/运行结果如图2-5所示。图2-5实例2-1的
9、运行结果从程序的运行结果来看,X显示的结果并不等于赋予它的值,而y显示的结果等于赋予它的值,说明float(单精度类型)数据只能保证前7位是精确的,double(双精度类型)数据的精度可以为1516位。2.1.3字符型数据在C语言中,一个字符型数据在计算机的内存中占据一个字节的存储空间,但计算机并不是将字符本身存储到存储单元中(存储单元只能存储二进制编码),而是将字符所对应的ASCII码值转换为二进制的形式存储到相应的存储单元中。如大写字母A的ASCII码值为65,因此,大写字母A在存储单元中的存储形式实1OlOoOOol-际为整数65的二进制存储形式,如图2-6所示。图2-6大写字母A的存储
10、形式昆提示:C语言是将字符常量当作整数来进行处理的。字符常量与其对应的ASCII码值可以相互替代。字符型数据可以用字符形式输出,也可以用整数形式输出。字符型数据还可以作为整数参加运算。例如:A+10相当于65+10,结果为75。通过这种关系,可以进行大小写字母之间的转换运算,大写字母的ASCn码值加上就是其对应的小写字母的ASCII码值,即大写字母=小写字母-O【实例2-2将大写字母转换为小写字母并显示在屏幕上。iincludevoidmain()(charchi,ch2;chl=,M,;ch2=chl+;printf(ch2=%cnn,ch2);程序运行结果:ch2=m2.2标识符、常量和变
11、量2.2.1 标识符在编写程序时,需要对变量、函数、宏或其他实体进行命名,这些名字称为标识符”。标识符只可以使用字母、数字和下划线,而且必须以字母或下划线开头。标识符的长度可以是一个或多个字符,最长不允许超过个字符。下面是正确的用户标识符:name、abcl2、person_name下面是不合法的用户标识符:2piece score/student a value int不能以数字开头含有既非字母又非数字的字符含有空格与关键字同名C语言中的标识符区分大小写,因此,sum、Sum和SUM分别代表三个不同的标识符。用户在编程过程中要特别注意的是:标识符不能和C语言系统中的关键字相同(关键字是C语言
12、系统规定的具有特定意义的标识符,见附录A),也不能和用户自定义的函数或C语言库函数同名。2.2.2 常量常量是在程序运行过程中,其值不发生变化的量。在C语言中,常量分为符号常量和直接常量。1 .符号常量符号常量是指用一个标识符表示的常量。符号常量在使用前必须定义,定义的形式如下:!define在这里,#define是C语言的预处理命令。在编辑C语言源程序时,可以宜接使用已定义的符号常量,编译时会对程序中出现的符号常量进行替换。【实例2-3了解符号常量的用法。iinclude!definePI3.1416voidmain()intr=10;floatarea;area=PI*r*r;printf
13、(,area=%fn,zarea);程序运行结果:area=314.1600003提示:定义符号常量的目的是为了提高程序的可读性,方便程序的调试和修改,因此在定义符号常量时,应尽可能地表达它所代表的含义,如前面定义的Pl就是代表圆周率3.1416。2 .直接常量直接常量是指直接用数值表示的量,如24、3.14、叮,、string”等。直接常量分为整型常量、实型常量、字符常量、字符串常量、枚举常量等不同类型的常量。1)整型常量可以采用十进制、八进制、十六进制来表示一个整型常量。 十进制:包含09中的数字,但是一定不能以0开头,如15、-255。 八进制:只包含07中的数字,必须以0开头,如017
14、(十进制的15)、0377(+进制的255)。 十六进制:包含09中的数字和af中的字母,以Ox或OX开头,如OxfTHS制的15)、Oxff(十进制的T)、0x7f(十进制的127)。表2-4为整型常量在不同进制下的表示方法。表2-4整型常量的表示方法整型常量进制对应的十进制数值17十进制17017八进制150x17十六进制2317L或171十进制1717LU或171U十进制17:提示:可以在十进制整型常量后面添加1”或u”(1”和“u”不区分大小写)来修饰整型常量。若添加1”(或L)则表示该整型常量为长整型,如171;若添加u(或Uj贝寸表示该整型常量为无符号型,如,7u;若添加lu(或L
15、U)则表示该整型常量为无符号长整型,如“171U”。2)实型常量实型常量常用浮点计数法或科学计数法两种方法表示,如231.46、7.36E-7o科学计数法要求字母e(或E)的两端必须都有数字,而且右侧必须为整数。如下列科学计数法均是错误的:e3、2.1e3.2e。3)字符常量字符常量是由一对单引号括起来的单个字符,如,A,、,9,、,$,等均为字符常量。在这里,单引号只起定界作用,不代表字符。在C语言中,一个字符占用一个字节的存储空间,字符在ASCIl表中按照其对应的ASClI码值依次排列。ASCIl表详见附录B。除了能直接表示和在屏幕上显示的字符外,还有一些字符是不能显示、用来表示不可打印的
16、控制字符和特定功能的字符。如实例2-1中的prinlf(x=%fn”,x);”,其中的“n”就是一个这样的控制字符。这种字符称为转义字符”。转义字符用反斜杠()后面跟一个字符或者一个八进制或十六进制数表示。表2-5所示为C语言中常用的转义字符。表2-5转义字符转义字符意义ASCII码值n换行10t水平制表符9b退1格8r回到本行的开始13f换页12W反斜杠92V单引号字符39续表转义字符意义ASCII码值双引号字符340空字符0dddI3位八进制数所代表的字符xhh12位十六进制数所代表的字符3提示: 字符码ddd表示13位八进制数字,可以不用前缀0。如701代表ASCII值为八进制数101的
17、字符,八进制数101相当于十进制数65,ASCn值为65的字符是大写字母,AL 字符码hh表示12位十六进制数字,不能忽略前缀X。如x47代表ASCII值为十六进制数47的字符,十六进制数47相当于十进制数71,ASCIl值为71的字符是大写字母,G。 单引号和反斜杠必须用转义字符表示。4)字符串常量字符串常量是由一对双引号括起来的字符序列。如“China”、a”、123”等都是字符串常量。双引号之间没有任何字符的字符串常量称为空字符串。在C语言中,系统会自动在字符串常量的尾端加入一个字符,0,作为字符串的结束标记,因此,长度为n个字符的字符串常量,在内存中占用n+1个字节的存储空间。例如,字
18、符串常量china有5个字符,则其存储空间为6个字节,其存储形式如图2-7所示。Ch1na0图2-7字符串常量“china的存储形式在C语言中,处理字符串问题时经常要用到数组或指针,这部分内容将在后续章节中讲述。9注意:不要混淆字符常量与字符串常量。字符常量是由一对单引号括起来的单个字符,占1个字节的存储空间,如,s、HOl等;而字符串常量是由一对双引号括起来的字符序列,如“china,占6个字节的存储空间,其中最后一个字节用来存放字符、0%2.2.3变量1 .变量的定义变量是指在程序运行过程中其值可以改变的量。在程序定义变量时,编译系统就会给它分配相应的存储单元,用来存储数据,变量的名称就是
19、该存储单元的符号地址。在使用变量之前必须对其进行声明,为了声明变量,首先要指定变量的类型,然后说明变量的名字。声明变量的格式如下:类型名变量名表;二提示: 类型名:必须是有效的C语言数据类型,如int、float、double、Char等。 变量名表:可以是相同类型的若干个变量名,变量名之间用逗号隔开。例如:intnumber;*number为整型变量*/floatscore,avg;*scoreavg为单精度实型变量*/通常,变量定义的语句放在函数的开头,也可以放在函数的外部或复合语句的开头。2 .变量的初始化在程序中为变量赋值的时候,编译系统就会根据变量名称找到其对应的存储单元的地址,将所
20、赋的值存放进去。C语言允许在定义变量的同时对变量进行初始化。一般形式如下:类型名变量名=表达式,;例如:inta=3;/*定义a为整型变量,初值为3*/floatpi=3.1416,score;/*定义pi、SCOre为单精度实型变量,Pi的初值为3.1416*/charch=f;/*定义Ch为字符型变量,初值为代,*/也可以对定义的变量的一部分赋初值。例!如:intlength,width=10,area;表示定义length、width和area为整型变量,并且对width赋初值10。若要对几个变量赋同样的值,每个变量应分别赋初值,如写成以下形式:inta=10,b=10zC=IO;而绝不
21、能写成如下形式:inta=b=c=10;2.3运算符与表达式c语言提供了丰富的运算符,除流程控制语句与输入/输出操作之外的绝大多数基本操作都是由运算符来处理的。2.3.1 概述1 .运算符的分类1)按运算符操作对象的数量分类运算符能连接运算对象的个数称为运算符的目。C语言中运算符的目有如下三种。 单目运算符:只能连接一个运算对象,如+、&等。 双目运算符:可以连接两个运算对象,如+、-等。C语言中的运算符大多数属于双目运算符。 三目运算符:可以连接三个运算对象。C语言中只有一个三目运算符,即条件运算符。1 )按运算符的性质分类C语言的运算符极其丰富,根据运算符的性质分类,可分为算术运算符、关系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 基础知识
![提示](https://www.desk33.com/images/bang_tan.gif)
链接地址:https://www.desk33.com/p-847045.html