《第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(或LU)则表示该整型常量为无符号长整型,如“171U”。2)实型常量实型常量常用浮点计数法或科学计数法两种方法表示,如231.46、7.36E-7o科学计数法要求字母e(或E)的两端必须都有数字,而且右侧必须为整数。如下列科学计数法均是错误的:e3、2.1e3.2e