C语言基本数据类型与表达式_第1页
C语言基本数据类型与表达式_第2页
C语言基本数据类型与表达式_第3页
C语言基本数据类型与表达式_第4页
C语言基本数据类型与表达式_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

第二章C语言的基本数据类型与表达式

2.1C语言的基本数据类型

2.2常量和变量

2.3运算符与表达式

2.4数据类型转换C语言程序设计教程1带符号数的表示数有正负,在计算机中用0表示正,用1表示负。通常的做法是:用一个数的最高位来表示符号,若一个机器数(在计算机中使用的、连同数符一起数字化了的数)的最高位为0,表示其是一个正数,否则是一个负数。计算机中对带符号数有原码、补码、反码三种形式。

原码规则为:符号位遵循上述规则。正数和负数的数值部分均用其绝对值的二进制表示。补码规则为:符号位遵循上述规则。正数的数值部分就是该数的二进制。负数的数值部分为该数的绝对值的二进制按位取反后加1。2ASCII码

字符是计算机中最多的信息形式之一,是人与计算机进行通信、交互的重要媒介。在计算机中,要为每个字符指定一个确定的编码,作为识别与使用这些字符的依据。国际上使用最多的字符符号总数不超过128种,可用7位二进制位的不同编码表示,美国信息交换标准码(AmericanStandardCodeforInformationInterchange),简称ASCII码,得到广泛的应用。标准的ASCII码是7位码,用1个字节表示,最高位总是0,可以表示128个字符。扩展的ASCII码是8位码,也是一个字节表示,其前128个码与标准的ASCII码是一样的,后128个码(最高位为1)则有不同的标准。32.1C语言的基本数据类型数据类型概述:第2章C语言的基本数据类型与表达式

在程序中要指定数据的类型和数据的组织形式,即数据结构。C语言中的数据类型分类如下:

C语言中的数据,有常量和变量之分,它们分别属于上述这些类型。字符型(char)整型(short,int,long,unsigned)单精度型(float)实型双精度型(double)枚举类型(enum)

数组类型([])构造类型结构体类型(struct)共用体类型(union)指针类型(*)空类型(void)基本类型数据类型41、常量:

(1)十进制形式:与数学上的整数表示相同;例如:12,-100,0(2)八进制形式:在数码前加数字0;(八进制的数码范围为0~7)

例如:012=1*81+2*80=10(十进制)(3)十六进制形式:在数码前加0X(数字0和字母X)。例如:0x12=1*161+2*160=18(十进制)

一、整型第2章C语言的基本数据类型与表达式2、分类:

根据数据所占的二进制位数分为:int、short[int]、long[int]。在TurboC中,short占2个字节,int占2个字节,long占4个字节。同样存储长度的数据又分unsigned、signed;故可组合出六种类型。53.整型数据在内存中的存放形式——以二进制补码的形式存放。如整数12在内存中的实际存放情况下图所示:

整数12在内存中的存放示意图

正数的补码:与原码相同负数的补码:负数→取绝对值→二进制→按位取反→再加1→补码

注意:若一个整数后没有l或L,则表示其是基本整型,占2个字节,否则表示其是长整型,占4个字节。如:12在内存中占2个字节,而12L则占4个字节。000000000000101063的原码

按位取反

加1得-3的补码

由此可知,在整数的16位中,最左边的一位为符号位,为0,表示数值为正;为1,表示数值为负000000000000010111111111111110101111111111111110例如:求-3在内存中的存放形式74、值域:

由机器中数据的存储长度决定。

关键字

所占位数

取值范围

short16-32768~32767(即-215~215-1)unsignedshort160~65535(即0~216-1)int16-32768~32767unsignedint160~65535long32-2147483648~2147483647unsignedlong32 0~429496729585、整型数据的溢出:

不同的整型数据有不同的取值范围,在程序运行过程中,如果出现数值超出整型数据的允许值范围,就会出现“溢出”。例如:一个int型的变量的最大值为(215-1)=32767,如果再加1,则产生溢出,其结果为:-215=-32768100000000000000032767-32768011111111111111191、常量:(1)十进制小数形式:由数字和小数点组成;例如:3.4,4.,.3。(2)指数形式:“十进制小数”+“e(或E)”+“十进制数整数”。例如:12.5e-6

表示12.5×10-6e或E的两边必须有数,且其后面必须为整数;如:6E0.2e5

2、分类:关键字字节数取值范围有效数字float4-3.4×10-38~

3.4×10386~

7double8-1.7×10-308~

1.7×1030815~16注意第2章C语言的基本数据类型与表达式二、实型101、字符常量:

(1)用单引号括起来的一个字符;如:‘A’、‘1‘、’?’等。

(2)用单引号括起来的由反斜杠(\)引导的转义字符。转义是指在源程序中碰到这种字符组合时,反斜杠的意义已经发生转变,变成控制代码和具有某些特殊用途的单个字符。如:‘\n’字符形式功能\n换行\t横向跳格\b退格\r回车\\反斜杠字符\’单引号字符\ddd8进制数表示的ASCII码对应的字符\xhh16进制数表示的ASCII码对应的字符第2章C语言的基本数据类型与表达式三、字符类型112、分类:char和unsignedchar;3、变量值的存储字符数据在内存中存储的是字符的ASCII码──一个无符号的整数,其形式与整数的存储形式一样。

例如:字符‘A’的ASCII码为65,在内存中的存放形式为:

由一个大写字母的ASCII码可以很容易的得出其对应的小写字母的ASCII码,他们之间相差32:小写字母的ASCII码大。比如:‘A’的ASCII码为65,则‘a’的ASCII码为97。同样还可以很容易的得出其它大写字母的ASCII码,相邻的两个大写字母的ASCII码相差1。比如:‘D’的ASCII码为68。第2章C语言的基本数据类型与表达式知道了字符A的ASCII码则A可以表示为:‘A’、’\x41’、’\101’。010000011200110000又如:字符‘0’的ASCII码为48,在内存中的存放形式为:而整数0在内存中的存放形式为:00000000数字字符与数字是两个不同的概念,它们相差48,也即:字符‘0’=整数0+整数48。同样,知道任何一个数字字符的ASCII码,可以很容易的得出其它数字字符的ASCII码,相邻的两个数字字符之间ASCII码相差1。134、字符串:是用一对双引号括起来的字符序列。如:“SHANGHAI”,“AbcdeFGHijk”,“Howareyou”。字符串中字符的个数称为字符串长度。长度为0的字符串(即一个字符都没有的字符串)称为空串,表示为“”(一对紧连的双引号)。例如“Howdoyoudo.”、“Goodmorning.”等,都是字符串常量,其长度分别为14和13(空格也是一个字符)。

如果反斜杠和双引号作为字符串中的有效字符,则必须使用转义字符。例如(1)C:\msdos\v6.22→"C:\\msdos\\v6.22"

(2)Isay:"Goodbye!"→"Isay:\"Goodbye!\"“注意‘\’‘√‘\\‘√‘’‘‘\‘‘a’与“a”的区别。14一、常量与符号常量

常量是指在程序运行中,其数值不能被改变的量。

常量又可分为直接常量和符号常量。第2章C语言的基本数据类型与表达式2.2常量与变量15120、-100、0;0120、072;0xFFFF、0x1e、0X28AF,0XED4;120L,200L

长整型常量3.14、-3.1、5.12E-6;'a'、'#'、'\n'、'\101';099、12f、0xg、48EA、0x28aL;019.5、1e-08;2.1E10.2、E-6、6.4E+4.8、E9

"changsha"、"+++\\?ab";

'\'、'\p'、'''、'ab';第2章C语言的基本数据类型与表达式1、直接常量:是在程序中直接引用的数据。请判断这些常量正确与否:16120、-100、0;0120、072;0xFFFF、0x1e、0X28AF,0XED4;120L,200L

长整型常量3.14、-3.1、5.12E-6;'a'、'#'、'\n'、'\101';

099、12f、0xg、48EA、0x28aL;

019.5、1e-08;

2.1E10.2、E-6、6.4E+4.8、E9

"changsha"、"+++\\?ab";

'\'、'\p'、'''、'ab';172、符号常量是用标识符来表示一个数据;在程序不能给它赋值。

定义形式:

#define

标识符

常量数据例如:#definePI3.14159在程序预处理时,凡是出现标识符PI的地方都将用数据3.14159来替换。如:2*2.3*PI

就等价于2*2.3*3.14159。第2章C语言的基本数据类型与表达式二、变量1.变量的概念变量是指以标识符为名字,在程序运行过程中,其值可以被改变的量称为变量。2.变量的两个要素

18(1)变量名。每个变量都必须有一个名字──变量名,变量命名遵循标识符命名规则。(2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。说明:标识符命名的良好习惯──见名知意:所谓“见名知意”是指,通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。193.变量的定义与初始化在C语言中要求对所有用到的变量,必须先定义、后使用;且称在定义变量的同时进行赋初值的操作为变量初始化。(1)定义形式:类型标识符变量名1[,变量名2,变量名3...];

例如:inta,b,c;

floatx,y;charc1,c2;或intc1,c2;

自己设定,满足标识符的规定。如:int,float,char;不可省(2)变量初始化

在说明变量的同时给变量一个初始值。inta=5,b=3;√

inta=b=c=3;inta=3,b=3,c=3;√

例如20一、C语言的运算符简介按操作功能,C语言中的运算符大致可分为右边的12大类

第2章C语言的基本数据类型与表达式2.3运算符与表达式算术运算符+-*/%关系运算符><==>=<=!=逻辑运算符!&&‖位运算符<<>>~|∧&赋值运算符=条件运算符?:逗号运算符,指针运算符*和&求字节数运算符sizeof强制类型转换运算符分量运算符•→下标运算符[]211、运算符的优先级与结合性优先级别:它决定了运算符的运算顺序,即优先级高的运算符先运算,优先级低的运算符后运算。结合规则:规定了连续几个具有相同优先级运算符的运算顺序,即优先级相同的由结合规则来决定运算顺序。

自左至右的结合方向,称为左结合性。反之,称为右结合性。结合性是C语言的独有概念。2、表达式求值(表达式是由运算符和括号将操作数连接起来,符合C语言规则的式子,其值为数值型数据)1)按运算符的优先级高低次序执行。例如,先乘除后加减。2)如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按C语言规定的结合方向(结合性)进行。例如,算术运算符的结合方向是“自左至右”,即:在执行“a–b+c”时,先执行“a-b”;然后再执行加c的运算。22二、算术运算符和算术表达式1.五种基本算术运算符

+、-(减法/取负)、*、/、%(求余数)(1)关于除法运算符/C语言规定:两个整数相除,其商为整数,小数部分被舍弃。例如,5/2=2。但5.0/2=2.5;(2)关于求余数运算符%要求两侧的操作数均为整型数据,否则出错。例如:5%3的值为2; -5%3的值为-2; 5%(-3)的值为2; -5%(-3)的值为-2; 12.3%3×

第2章C语言的基本数据类型与表达式232、自增(++)与自减(--)运算符:自增运算使单个变量的值增1,自减运算使单个变量的值减1,结合性:自右至左。用法与运算规则(1)前置运算:运算符放在变量之前:++i,--i。

先使变量的值增(或减)1,然后再以变化后的值参与其它运算,即先增减、后运算。(2)后置运算──运算符放在变量之后:i++,i--。

变量先参与其它运算,然后再使变量的值增(或减)1,即先运算、后增减。例如:等价于i=i+1;j=i;i++;所以i的值为4,j的值为3。i++;j=i;所以i的值为4,j的值为4。(1)i++;++i;(2)i=3;j=i++;(3)i=3;j=++i;第2章C语言的基本数据类型与表达式3、算术表达式241、赋值运算符赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。赋值运算符的一般形式为:变量=表达式

优先级:只比逗号运算符高;

结合性:自右至左;例如:(1)x=(y=12)/4y值为12,x值为3,表达式的值为3(2)x=y=12/4y值为3,x值为3,表达式的值为3(3)x=(y=12/4)y值为3,x值为3,表达式的值为3(4)(x=y)=12/4如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。第2章C语言的基本数据类型与表达式三、赋值运算符和赋值表达式252.复合赋值运算符复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。复合赋值运算的一般格式为:表达式1op=表达式2它等价于:表达式1=表达式1op(表达式2)当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。例如,x+=3 /*等价于x=x+3*/y*=x+6 /*等价于y=y*(x+6),而不是y=y*x+6*/设a=12,计算表达式a+=a-=a*12和a+=a-=a*=12的值C语言规定的5种复合算术赋值运算符如下:+=,-=,*=,/=,%=; /*复合算术赋值运算符(5个)*/263.赋值表达式由赋值运算符或复合赋值运算符,将一个变量和一个表达式连接起来的表达式,称为赋值表达式。(1)一般格式变量(复合)赋值运算符表达式(2)赋值表达式的值任何一个表达式都有一个值,赋值表达式也不例外。被赋值变量的值,就是赋值表达式的值。例如,“a=5”这个赋值表达式,变量a的值“5”就是它的值。注意:

复合运算符是一个运算符,但功能上,是两个运算符功能的组合。271、逗号运算符:

形式:逗号表达式1,逗号表达式2,…,逗号表达式n

求解过程:自左至右,依次计算各表达式的值,“表达式n”的值即为整个逗号表达式的值。例如,逗号表达式“(a=3*5,a*4),a+5”的值=20:先求解a=3*5,得a=15;再求a*4=60;最后求解a+5=20,所以逗号表达式的值=20。

优先级:最低;

结合性:自左至右;

表达式的值:最后一个表达式的值。注意:

C语言常用逗号作为分隔符,例如:inta=3,b=4,c=5;第2章C语言的基本数据类型与表达式四、其它运算符28

形式有两种:sizeof变量名sizeof(类型名)

结果为整型数。inta;floatx;sizeofasizeofxsizeof(int)sizeof(float)例如第2章C语言的基本数据类型与表达式2、求字节运算符:

sizeof

作用:求得变量或某种数据类型所需的字节数。29◆

C语言允许整型、实型、字符型数据进行混合运算。◆

有3种转换方式:自动转换、赋值转换和强制转换。一、类型自动转换

如果一个运算符两侧的操作数的数据类型不同,则系统按“先转换、后运算”的原则,首先将数据自动转换成同一类型,然后在同一类型数据间进行运算。转换规则如图所示。

注意:箭头方向只表示数据类型由低向高转换,不要理解为int型先转换成unsigned型,再转换成long型,最后转换成double型。第2章C语言的基本数据类型与表达式2.4数据类型转换

1)横向向左的箭头,表示必须的转换。char和short型必须转换成int型,float型必须转换成double型。2)纵向向上的箭头,表示不同类型的转换方向。doublelongunsignedintfloatchar,short高低30

intx=2;floaty=1.6;charc=‘A’;则:c+x*y=c+x

温馨提示

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

评论

0/150

提交评论