第三章 数据类型、运算符和表达式.docx_第1页
第三章 数据类型、运算符和表达式.docx_第2页
第三章 数据类型、运算符和表达式.docx_第3页
第三章 数据类型、运算符和表达式.docx_第4页
第三章 数据类型、运算符和表达式.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

第三章 基本数据类型、运算符和表达式3.1 C语言的数据类型数据在加工计算中的特征就是数据的类型。例如,职工的年龄和工资,具有一般数值的特点,在C语言中称为数值型。基本数据类型基本数据类型包括数值型(整型、实型)、字符型。构造类型由若干个相关的基本数据类型组合在一起形成的一种复杂的数据类型。1. 数组型由相同类型数据组合而成,例如,若干个人的年龄组合在一起,就是一个整型数组。2. 结构型可以由不同数据类型组合而成,例如,一个人的姓名(字符型)、性别(字符型)、年龄(整型)构成一个结构型数据。指针型一种特殊的数据类型,用来表示内存地址。例如,一个人年龄的内存地址,某个数组的首地址、数组中某个数据的地址都可以用指针型数据来表示。3.2 常量常量又叫常数,程序运行过程中其值不改变的数据。常量是不需要事先定义的,只要在程序中需要的地方直接写出即可。3.2.1 整型常量整型常量就是通常的整数,包括正整数、负整数和0。在C语言中,整整常量有三种书写形式:(1) 十进制整数十进制整数就是通常整数的写法。例如:0、-111、+15、21等。(2) 八进制整数在八进制整数前面加一个数字0。例如,00、-0111、+015、021等,它们分别表示十进制整数:0、-73、+13、17。(3) 十六进制整数在十六进制的前面加0x。例如0x0、-0x111、+0x15、0x21等,它们分别表示十进制整数0、-273、+21、33。短整型常量(一般的整型常量)数值范围-32768+32767,占用2个字节,不管是十进制、八进制或十六进制整数。长整型常量数值范围-2147483648+2147483647,占用4个字节。它的书写方法分为十进制、八进制和十六进制整数三种,惟一不同的是在整数末尾加上字母l或者大写字母L。例如,0L、-0111L、+0x15L都是长整型常量。 实型常量实型常量只使用十进制,它的书写形式有两种:(1) 一般形式的实数。由整数部分、小数点、小数部分组成,其中整数部分或小数部分可以省略其中的一个。例如,12.345、-1.2345、47.0、1.234、47.等都是实型常量。(2) 指数形式的实数。由尾数部分、小写字母e或者大定字母E、指数部分组成,例如,12.345e-2、-1.2345E3分别是十进制的0.12345、-1234.5。3.2.3 字符常量字符常量用两个单引号()前后括住的单个字符来表示。例如,a、1、%、A、n、101都是字符常量。在内存中,每一个字符常量占用一个字节,具体存放的是该字符对应的ASCII代码值。例如,a、A分别是97、65。3.2.4 字符串常量字符串常量简称为“字符串”。字符串就是用两个双引号(”)前后括住的一串字符。例如,”abc”、”123456”、”aAbc”都是字符串。在字符串中使用双引号必须用转义字符”。例如,字符串”abcd”应写成”abcd”。字符串的长度字符串中所有字符的个数,其中每个转义字符只当做一个字符。例如,字符串”abc”、”abcd”的长度分别为3、6。虽然每一个字符在内存中只占用1个字节,但C语言规定,每个字符串在内存中占用的字节数等于字符串的长度+1。3.2.5 符号常量符号常量是常量的另一种表示方法。符号常量的定义方法如下:#define 符号常量 常量符号常量的定义一般放在程序的开头,每个定义必须独占一行,其后不跟分号。例如:#define PI 3.14159 /*定义了符号常量PI,其值等于实型常量3.14159*/3.2.6 宏定义命令宏定义命令的一般格式如下:#define 宏名 一串符号在程序中可以使用已经定义过的“宏名”,称为“宏调用”;当对源程序进行编译之前,将把所有的”宏名”替换成对应的”一串符号”,称为”宏替换”。由于宏替换是在编译前进行的,所以宏定义命令属于C语言的”预编译命令”。例如:#define PI 3.14159 /*定义了宏名PI对应的一串符号3.14159*/#define R 10 /*定义了宏名R对应的一串符号10*/如果程序中出现2*PI*R则宏替换后的结果是2*3.14159*10。3.3 变量变量是指程序运行过程中其值可以发生变化的量,通常用来保存程序运行过程中的输入数据、计算获得的中间结果和最终结果。 在程序中使用任何变量,都必须明确变量名、变量值、变量类型这三个概念。3.3.1 变量的数据类型及其定义C语言规定,变量可以是任何一种数据类型。通常把具有某种数据类型的变量叫做该类型变量。例如,短整型变量、长整型变量、单精度型变量、双精度型变量、字符型变量等等。需要注意的是,字符串只能是常量,C语言中没有字符串变量。每个变量在使用前必须定义,定义变量的语句格式如下:数据类型符 变量名1,变量名2;基本数据类型数据类型数据类型符占用字节数数值范围整型Int2同短整型短整型Short2-32768 +32767长整型Long4-2147483648 +2147483647无符号整型Unsignedint2同无符号短整型无符号短整型Unsigned short20 65535(0 216-1)无符号长整型Unsigned long40 4294967295(0232-1)单精度实型Float4-1038 1038 (保留7位有效数字)双精度实型Double8-10308 10308 (保留11位有效数字)字符型char1-128 +127对变量进行定义时,要注意下列几点:(1) 对变量的定义可以放在函数之外,也可以放在函数体中或复合语句中。如果是放在函数体或复合语句中,则必须集中放在最前面。(2) 被定义在整型的变量,若其值在-128 127之间,可以当做字符型变量使用。(3) 被定义为无符号整型的变量,若其值在0 255之间,也可以当做字符型变量使用。(4) 当定义了某个变量后,会自动给它分配连续的内存单元。例如:Int I,j,k; /*定义了3个带符号整型变量,变量名分别为I,j,k*/Unsigned int u1,u2; /*定义了2个无符号整型变量,变量名分别为u1,u2*/Float f1,f2; /*定义了2个单精度型变量,变量名分别为f1,f2*/Char c1,c2; /*定义了2个字符型变量,变量名分别为c1,c2*/3.3.2 变量的初始化在定义变量的同时给变量赋予初始值就称为变量的初始化。数据类型符 变量名1=初值1,变量名2=初值2;例如:Int i=0,j=1; /*整型变量i初值为0、j初值为1*/Float f1=10.0,f2=1234E-2;/*单精度实型变量f1初值10.0、f2初值为12.3*/Char c1=y,c2=n; /*字符型变量c1初值为字符y、c2初值为字符n*/3.3.4 有名常量如果定义了变量并赋予其初值,又不希望程序修改其值,可以将该变量定义成有名常量。有名常量的定义方法如下:Const 数据类型符 变量名1=初值1,变量名2=初值2;例如:Const char char_y=y,char_n=N; /*定义字符型有名常量char_y和char_n,其值分别为字符y和N*/3.4 运算符用来表示各种运算的符号称为运算符。例如,数值运算中经常用到的加、减、乘、除符号就是运算符。单目运算符,运算对象只有一个的运算符;双目运算符,运算对象有两个的运算符;三目运算符(条件运算符)。3.4.1 算术运算符算术运算符包括基本的算术运算符和增1、减1运算符。1.算术运算符 算术运算符名称运算符对象数与位置运算规则对象类型结果类型结合性正+单目前缀取原值整型或实型整型或实型自右向左负-取负值加+双目中缀加法自左向右减-减法乘*乘法除/除法模%整除取余整型整型2. 增1、减1运算符 增1、减1运算符名称运算符对象数与位置运算规则对象类型结果类型结合性增1+单目前缀先加1,后使用整型、字符型、指针型同运算对象的类型自右向左单目后缀先使用,后加1减1-单目前缀先减1,后使用单目后缀先使用,后减1例如:Int a=3,b=3;Char c1=b,c2=B;表达式+a的值是4,运算结束变量a的值是4。表达式b的值3,运算结束变量b的值是2。3.4.2 关系运算符关系运算符用来比较两个数的大小,如果运算结果是逻辑值“真”,用整数1表示;如果逻辑值“假”,用整数0表示。 关系运算符名称运算符对象数与位置运算规则对象类型结果类型结合性小于双目中缀关系成立则为真,结果为1关系不成立为假,结果为0整型或实型或字符型0或1自左向右小于或等于大于或等于=等于=不等于!=例如:Int n1=65,n2=97;表达式n1n2、n2n1的值依次是0、1。3.4.3 逻辑运算符逻辑运算符对关系或逻辑值(真、假)进行运算,运算结果是逻辑值。 逻辑运算符名称运算符对象数与位置运算规则对象类型结果类型结合性逻辑非!单目前缀参见下表数值型或字符型逻辑值0或1自右向左逻辑与&双目中缀自左向右逻辑或| 逻辑运算符的运算规则abA&bA|b0(假)0(假)0(假)0(假)0(假)非0(真)0(假)1(真)非0(真)0(假)0(假)1(真)非0(真)非0(真)1(真)1(真) 逻辑与、逻辑或的运算3.4.4 赋值运算符赋值运算符分为三种:基本赋值运算符、算术自反赋值运算符、位自反赋值运算符。1. 赋值运算符赋值运算符是双目运算符,赋值运算符的左边必须是变量,右边是表达式。2. 算术自反运算符名称运算符对象数与位置运算规则对象类型结果类型结合性加赋值+=双目中缀A+=b相当a=a+b数值型数值型自右向左减赋值-=a-b=b相当a=a-b乘赋值*=A*=b相当a=a*b除赋值/=a/=b相当a=a/b模赋值%=A%=b相当a=a%b整型整型3.4.5 逗号运算符逗号运算符是双目运算符,其运算对象是表达式。其值等于右边表达式的值。例如:Int a=2,b=2,c,d;表达式c=2,d=3运算后,c、d依次为2、3,表达式值为3。3.4.6 条件运算符条件运算符是C语言中惟一的一个三目运算符,它是由两个符号?和:组合而成。名称运算符对象数与位置运算规则对象类型结果类型结合性条件? :三目中缀对e1?e2:e3 e1为真,取e2e1为假,取e3表达式e2(e3)的类型自右向左例如:int a=2,b=2,c=2,d=2;表达式a=b?(c=1):(d=0)运算后,a、b、d不变,c为1,表达式值为1。3.4.7 长度运算符sizeof() 计算数据类型所占用的字节数3.4.8 位运算符位运算的对象只能是整型数据(包括字符型)。运算结果仍是整型数据。1. 位逻辑运算符位逻辑运算符分为非、与、或、按位加四种。名称运算符对象数与位置运算规则对象类型结果类型结合性位非单目前缀1为0 0为1整型整型自右向左位与&双目中缀参见例子自左向右位或|按位加例如:char a=0x53,b=0xff;a对应的二进制数 01010011 b对应的二进制数 11111111表达式a&b运算结果是01010011表达式a|b的运算结果是11111111表达式ab的运算结果是101011002. 位移位运算符位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。名称运算符对象数与位置运算规则对象类型结果类型结合性左移双目中缀aab,a向右移b位例如:int a=10,b=120;a对应二进制数为0000 1010,b对应二进制数为0111 1000表达式a3的运算结果15(对应二进制数为0000 1111)3. 位自反赋值运算符名称运算符对象数与位置运算规则对象类型结果类型结合性位与赋值&=双目中缀A&=b相当于a=a&b整型整型自右向左位或赋值|=A|=b相当于a=a|b按位加赋值=A=b相当于a=ab位左移赋值=A=b相当于a=a=a=b相当于a=ab例如:int a=6,b=3;表达式b&=a运算结果b为2表达式b|=a运算结果b为7表达式ba运算结果b为5表达式a=b运算结果a为03.5 表达式用运算符将运算对象连接形成的运算式就是表达式。3.5.1 算术表达式由算术运算符连接数值型运算对象构成,具体构成规则如下:(1) 数值型常量、数值型变量、数值型函数调用;(2) +(算术表达式)、-(算术表达式)(3) +整型变量、-整型变量、整型变量+、整型变量-;(4) (算术表达式)双目算术运算符(算术表达式);算术表达式的类型可以是整型、单精度实型或双精度实型。3.5.2 关系表达式由关系运算符连接表达式构成,具体构成规则如下:表达式 关系运算符 表达式3.5.3 逻辑表达式由逻辑运算符连接表达式构成,具体构成规则如下:单目逻辑运算符 表达式表达式 双目逻辑运算符 表达式3.5.4 赋值表达式由赋值运算符或自反赋值运算符连接变量和表达式构成,构成规则如下:变量=表达式变量 自反赋值运算符 表达式3.5.5 逗号表达式由逗号运算符连接表达式构成,具体构成规则如下:表达式1,表达式23.5.6 条件表达式由条件运算符连接表达式构成,具体构成规则如下:表达式1?表达式2:表达式33.6 变量赋值及表达式计算时的数据类型转换规则1. 表达式计算中数据类型的自动转换规则(简称就长不就短)参加运算的各个数据都转换成数据长度最长的数据类型,然后计算。结果值的类型就是数据长度最长的数据类型。例如:int a=2,float f=3.0;计算表达式a+f的过程如下:首先,将a转换成单精度实型2.0然后参与计算,计算结果等于5.0。2. 运算结果存入变量时数据类型的自动

温馨提示

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

评论

0/150

提交评论