C的基本数据类型及运算

上传人:重生1****23 文档编号:369270969 上传时间:2023-11-21 格式:PPT 页数:94 大小:1.95MB
返回 下载 相关 举报
C的基本数据类型及运算_第1页
第1页 / 共94页
C的基本数据类型及运算_第2页
第2页 / 共94页
C的基本数据类型及运算_第3页
第3页 / 共94页
C的基本数据类型及运算_第4页
第4页 / 共94页
C的基本数据类型及运算_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《C的基本数据类型及运算》由会员分享,可在线阅读,更多相关《C的基本数据类型及运算(94页珍藏版)》请在金锄头文库上搜索。

1、2.1 标标 识识 符符 正确 不正确count 1 counttest123 hi!thereHigh-balance high.balancePI a+b 说明:(1)与有些程序设计语言的规定不同,在C语言中,标识符中大小写字母是有区别的。程序中基本上都采用小写字母表示各种标识符,如变量名、数组名、函数名等。书写的各种语句也均用小写字母,而大写字母只用来定义宏名等,用的不多。(2)不同的系统对标识符的长度有不同的要求,有的要求为6个字符,有的允许使用8个字符,而Turbo C系统下的有效长度为1至32个字符。(3)除了少数工作单元我们用单个字符作标识符,一般的应做到见名知意,以提高程序的可

2、读性。如用sum表示和,score表示成绩,max表示最大等等。2.1.2 关键字关键字 ANSI C规定了32个关键字(保留字),不能再用作各种标识符。下面列出32个关键字:auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,if,int,long,register,return,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while。它们用来表示C语言本身的特定

3、成份,具有相应的语义,可构成所有的C语言语句。C语言还使用下列12个标识符作为编译预处理的命令单词,但使用时前面应加“”:define,elif,else,endif,error,if,ifdef,ifndef,include,line,progma,undef。2.2 数据类型数据类型 2.2.1 基本数据类型基本数据类型 1.基本数据类型基本数据类型 表 2.1 C基本数据类型的长度和值域 字符型(char)变量用于存贮ASCII码字符,也可存贮8位二进制数。整型(int)变量用于存贮整数。因其字长有限,故可表示的整数的范围也有限。单精度实型(float)和双精度实型(double)变量用

4、于存贮实数,实数具有整数和小数两部分或是带指数的数据。表中的值域用绝对值表示。无值型(void)有两种用途:第一是明确地表示一个函数不返回任何值;第二是产生同一类型的指针。2.类型修饰符类型修饰符 除了无值类型外,基本数据类型可以带有各种修饰前缀。修饰符用于明确基本数据类型的含义,以准确地适应不同情况下的要求。类型修饰符种类如下:signed 有符号unsigned 无符号long 长Short 短 表表 2.2 C基本类型及其修饰符的所有组合基本类型及其修饰符的所有组合 不同的计算机系统对各类数据所占内存字节数有不同的规定,如int型有的系统占16位,有的占32位。long double型有

5、的占128位,有的占64位。有符号(signed)和无符号(unsigned)的整型量的区别在于它们的最高位的定义不同。如果定义的是有符号的整型(signed int),C编译程序所产生的代码就设定整型数的最高位为符号位,其余位表示数值大小。如最高位为0,则该整数为正;如最高位为1,则该整数为负。例如用8位二进制表示时:大部分计算机表示有符号数时都使用二进制补码。原因及细节将在微机原理课上学习。补码的求法很简单:正数补码即原码;负数的补码是将其对应原码的各位(除符号位外)按位求反,然后加1。上述四个数用 8 位二进制表示有符号数时机内补码值为:有符号整数对于许多运算都是很重要的。但是它所能表达

6、的最大数的绝对值只是无符号数的一半。例如,32767的有符号整数表示为:0111111111111111如果最高位设置为1,则该数就会被当作-1。然而,如将该数定义为无符号整型(unsigned int),那么当最高位设置为1时,它就变成了65535。3.访问修饰符访问修饰符 C语言有两个用于控制访问和修改变量方式的修饰符,它们分别是常量(const)和易变量(volatile)。带const修饰符定义出的常量在程序运行过程中始终保持不变。例如:const int num;将产生整型常量num,其值不能被程序所修改,但可以在其它类型的表达式中使用。const型量可以在其初始化时直接被赋值,或通

7、过某些硬件的方法赋值,例如num要定义成100,可写成:const int num=100;以后程序中出现num的地方就是100,也不能再被改变。volatile修饰符用于提醒编译程序,该变量的值可以不通过程序中明确定义的方法来改变。例如一个全程变量用于存贮系统的实时时钟值,在这种情况下,变量的内容在程序中没有明确的赋值语句对它赋值时,也会发生改变。这一点是很重要的,因为在假定表达式内变量内容不变的前提下,C编译程序会自动地优化某些表达式,有的优化处理将会改变表达式的求值顺序。修饰符volatile就可以防止上述情况发生。const和volatile可以同时使用。例如,假设0 x30是一个只随

8、外部条件而变化的口地址值,那么就恰好需要用下述说明来避免偶然因素所产生的副作用的影响。const volatile unsigned char*port=0 x30;2.2.2 构造数据类型构造数据类型 数组是一组连续、有序的存放在一起的具有相同类型的数据。结构体是将不同类型的数据按一定顺序存放在一起的数据结构。共用体是将不同类型的数据都存放在同一起始地址的内存单元中,共用一段内存以节省内存单元。枚举是只有几种可能的值,将其一一列举出来。实际是用符号来表示若干个可取的整型值,它是整型的一个子集。2.2.3 指针类型指针类型 指针是C语言中一个重要概念。正确而灵活地运用它,可以有效地表示复杂的数

9、据结构;能动态分配内存;能方便地使用字符串;有效而方便地使用数组;在调用函数时能得到多于一个的值;能直接处理内存地址等。指针类型迥异于前述各种数据类型,不管是简单类型的数据,还是构造类型数据,均是代表数据的,而指针类型是代表地址的。2.3 常常 量量2.3.1 数值常量数值常量 1.整型常量整型常量 整型常量也称为整型常数或整数。C整型常量按进制分可分为十进制整数,八进制整数和十六进制整数。1)十进制整数 十进制整数以正负号开头,后跟09的若干位数字构成。如123,-456,0等。2)八进制整数 八进制整数是以正负号开头,第一位数字一定是0,后面跟07的数字。如八进制数0123,相当于十进制数

10、83;八进制数-012,相当于十进制数-10。八进制数与十进制数的转换,方法如下:0123=182+281+380=64+16+3=83 3)十六进制整数 十六进制整数是以正负号开头,前两位为0 x,后面跟09和af的数字。其中a代表10,b代表11,其余类推。如十六进制数0 x123,相当于十进制数291;十六进制数-0 x12,相当于十进制数-18。十六进制数转换成十进制数,方法如下:0 x123=1162+2161+3160=256+32+3=291 0 x1ab=1162+10161+11160=256+160+11=427 4)二进制数,字节,字,位计算机内所有的信息均用二进制表示,

11、即计算机内只有0和1,也只认识由0和1组成的程序或数据。为什么在计算机中要使用二进制数呢?因为二进制数运算规则简单,用物理器材容易实现,如电压的高与低,开关的开与关,脉冲的有与无等等。一个二进制数0或1,称为“位”(bit)。在计算机存贮器中,为了便于管理,常将 8 个位称为一个“字节”(byte),每个字节存放在一个存贮单元中,每个单元赋于一个存贮地址。计算机在处理数据时,每一个数据是一个“字”(word),字是由若干字节组成。字可以是1个字节(字符),2个字节(整数),4个字节(实数,长整型数),8个字节(双精度实数)等等。2.单精度实型常量单精度实型常量 1)小数形式 一个实数可以是正负

12、号开头,有若干位09的整数,后跟一个小数点(必须有),再有若干位小数部分。如123.456,-21.37。数12用实数表示必须写成12.0或12.。一个实数有数值范围和有效位数的限制。实数的数值范围是3.410-38|x|3.41038,当小于3.410-38时按0对待(下溢),而大于3.41038时则上溢,一个溢出的数是无意义的。实数仅有7位有效数字,超过七位的将是不精确的。如1.2345678,在计算机内仅保留为1.234567,第八位数无法保留而失去,并不是第八位向第七位四舍五入。当上面的数要求用小数五位表示时,则表达为1.23457,即第七位向第六位四舍五入。2)指数形式 实数的指数形

13、式也称为科学计数法。一个实数的指数形式分成尾数部分和指数部分。尾数部分可以是整数形式或小数形式,指数部分是一个字母“e”后跟一个整数。如123e+01,-456.78e-01,0e0等。由于实数仅有7位有效数字,因此在内存中用三个字节来表示尾数,用一个字节来表示指数,所以指数部分用两位整数来表示。在书写时“e”与“E”完全等价。“e”前面必须有数字,“e”后面必须是整数。3.双精度常量双精度常量 当一个数用实数表达时,仅有七位有效数字,用长整型表达时仅有十位有效数字,实数的数值范围也只能小于3.41038。当超过以上范围时,我们可以用双精度常量来表达。双精度常量的取值范围由1.710-308|

14、x|1.710308,有效位可达16位左右。一个数当超过长整型数表达范围或超过实数表达范围时均按双精度常量对待。一个双精度常量在内存中占8个字节。长双精度常量取值范围在10-4931104932之间,有19位有效数字,在内存中占16个字节。但它是由计算机系统决定的,在Turbo C中,与double型一致。2.3.2 字符常量字符常量 表 2.3 控制字符表示法 2.3.3 字符串常量字符串常量 2.3.4 符号常量符号常量 1.不带参数的宏定义不带参数的宏定义 宏定义命令define用来定义一个标识符和一个字符串,在程序中每次遇到该标识符时就用所定义的字符串替换它。这个标识符叫做宏名,替换过

15、程叫做宏替换或宏展开。宏定义命令define的一般形式是:define 宏名 字符串 例如你想用PI表示数值3.14159,可以用宏定义define来说明:define PI 3.14159这样在编译时,每当在源程序中遇到PI就自动用3.14159代替,这就是宏展开。若定义了一个宏名,这个名字还可以做为其它宏定义的一个部分来使用。例如:define PI 3.14159 define PI2 2*PI则在程序中出现的“PI2”处被“2*3.14159”来替换。应注意宏替换仅是简单地用所说明的字符串来替换对应的宏名,无实际的运算发生,也不作语法检查。例如:define PI 3.14159;ar

16、ea=PI*r*r;经过宏替换后,该语句展开为 area=3.14159;*r*r;然后经编译将出现语法错误。在C语言程序中习惯上用大写字母作为宏名。undef 宏名来终止其作用域。例如:define PI 3.14159 main()undef PI f1()例例 2.1 宏定义的使用。程序:define R 3.0 define PI 3.1415926 define L 2*PI*R define S PI*R*R main()printf(L=%fn S=%fn,L,S);运行情况如下:L=18.849556S=28.274333经过宏展开后,printf函数调用语句被展开为:printf(L=%fn S=%fn,2*3.1415926*3.0,3.1415926*3.0*3.0);而在双引号内的L,S将不被替换,即字符串内与宏名相同的部分将不替换。2.带参数的宏定义带参数的宏定义 它不是进行简单的字符串替换,还要进行参数替换。其定义的一般形式为:define 宏名(参数表)字符串 其中字符串中包括参数表中所指定的参数。在使用时,要将程序中宏名后的实际参数代入字符串中参数的位置

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号