版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 二 章 数据类型、运算符和基本语句 本章主要讨论C+语言中的一些基本概念,如基本数据类型、运算符以及利用这些运算符来构成相应表达式的一些规则、基本语句等。 所谓标识符,是指用来标识程序中所用到的变量名、函数名、类型名、数组名、文件名以及符号常量名等的有效字符序列。 2.1 基本概念 2.1.1标识符由字母(大、小写皆可)、数字及下划线组成,且第一个字符必须是字母或下划线。标识符的命名规则:在+语言中,大写字母和小写字母是有区别的。标识符说明year,Day,ATOK,x1,_CWS,_change_to下面的标识符名是合法的:#123,.COM,$100,2002Y, 1_2_3下面的标识
2、符名是不合法的: 常量又称常数,是指在程序运行过程中其值不能被改变的量,如:100 ,3.14等。常量也分为不同的类型,这是由常量本身隐含决定的。为了增加程序的可读性,可以用一个名字(字符序列)来代表一个常量,此时的常量被称为符号常量。 2.1.2 常量 变量是指在程序运行过程中其值可以被改变的量。不同类型的变量在内存中占用不同的存储单元,以便用来存放相应变量的值。 2.1.3变量 组成变量名(标识符)的有效字符数随+语言的编译系统而定。在进行程序设计之前,应首先了解所使用的编译系统对变量名长度的规定,以免造成变量使用上的混乱。 变量名长度 关键字,又被称为保留字或保留关键字,它用来命名+语言
3、程序中的语句、数据类型和变量属性等。2.1.4 关键字 每个关键字都有固定的含义,不能另作其它用途,+语言中的所有关键字都是用小写字母来表示的。bool 布尔型int 整型char 字符型float 单精度浮点型double 双精度浮点型void void型(或称空值类型)2.2 基本数据类型程序中用到的所有变量,都必须先定义后使用,每个变量只能与一种数据类型相联系。+语言规定在定义变量时,不能把+语言中具有固定含义的关键字(如int、char)作为变量名。同一个函数内所定义的变量不能同名。 (一) 整型变量 2.2.1 整型变量及其常量int i1, i2;其中i1和i2即被定义为整型变量。
4、整型变量可用来存放整型数据(即不带小数点的数)。定义方式如下:(1)十进制整型常量(二) 整型常量 (三种数制来表示)(2)十六进制整型常量(3)八进制整型常量319,-200(128)10 ( 0 x80 )16(128)10 ( 0200 )8单精度浮点型变量 float f1, f2;2.2.2 浮点型变量及其常量double d1, d2;(1) 浮点型变量 带有小数点的数被称为浮点数。变量定义双精度浮点型变量定义 (2)浮点型常量(两种表示形式)十进制数180000.0 指数法1.8e5=(2)指数法形式:又称为科学记数法,它是由尾数、指数及字母e(或E)来表示的。(1)十进制数形式
5、:它是由数字和小数点来表示的3.14159 -7.2 9.8 2.2.3 字符型变量及其常量其中c1和c2即被定义为字符型变量。 char c1, c2;( 1) 字符变量字符型变量用于存放一个单个字符定义方式:(2) 字符常量字符型常量是由单引号括起来的一个字符。 A * 8如: 字符常量举例 n: 换行字符 r: 回车字符 b: 退格字符 t: 制表字符,又被称为横向跳格字符 : 单引号字符 ”: 双引号字符在C+语言中,还允许使用一些特殊形式的字符型常量(以反斜线字符开头的字符序列) C+语言还允许在字符后面紧跟1 3位八进制数或在x后面紧跟1 3位十六进制数来表示相应系统中所使用的字符
6、的编码值。 7(或007、07)可以用来表示响铃字符。如: 注意事项 由 开头的特殊字符,仅代表一个单个字符,而不代表多个字符,它仅代表相应系统中的一个编码值。 2.2.4 void型数据 void型是不具有值的特殊的数据类型,它明确指出没有值的这一特性。 注意:不能以下述方式来定义变量 void dt; void型主要用在函数值类型说明以及指针类型说明等。不存在void型一般变量。void型一般用在如下三个方面: (1)用于定义指向任何数据类型的指针。 例如:void *p;(2)如果函数没有返回值,则在函数定义时,可将返回值类型定义为void型。例如: void func (int n)
7、(3)如果函数没有参数,则在函数定义时,其参数的位置可以放上void说明,以明确表明此函数无参数。int func (void) 例如:2.2.5 bool型变量及其常量 只能保存真、假值的变量为bool型变量。bool b1, b2;(1) bool型变量定义形式:b1和b2即被定义为bool型变量。 (2) bool型常量bool型常量只有两个:true和false。 bool b1, b2; b1=true;b2=false;bool型变量一般用于条件判断语句中例如:b1=10;/非0值相当于: b1=true;/显示1b1=0;相当于b1=false;/显示02.3 long、shor
8、t、signed、unsigned 2.3.1 long和short关键字 在C+语言中,可以在int的前面加上long和short,以定义长整型和短整型变量,同时,还可以在double的前面加上long,以定义长浮点型变量。 举 例 long int Li; short int Si; long double Ld;long int Li; short int Si; long Li; short Si;可简写为其中 float = double = long doublefloat型变量、double型变量以及long double 型变量所能表示的数据大小的关系如下所示:int型变量、s
9、hort int 型变量以及long int 型变量所能表示的数据大小的关系如下所示: short int = int signed si;unsigned int ui; = unsigned ui;2.4 枚举 在程序设计过程中,如果一个变量仅在很小的范围内取值,则可以把它定义为枚举类型,使用枚举类型的变量能够提高程序的可读性。枚举变量的几种定义形式(1)先定义枚举类型,然后定义枚举变量enum color red, yellow, blue, green, white, black;enum 为定义枚举类型变量的关键字color 为枚举类型名red、yellow和black等为枚举元素或
10、枚举常量。color c; / c枚举变量(2)定义枚举类型的同时,定义枚举变量enum color red, yellow c, b; c、b 就是color类型的枚举变量。(3)直接定义枚举变量 enum red, yellow c;c为枚举变量,其取值范围仅限于枚举元素表中的值(即枚举常量)。使用枚举类型数据时注意如下几个问题:1)枚举元素都是常量,而不是变量,不能为枚举元素赋值。 2)每个枚举元素都有一个确定的整数值,可以在枚举类型定义时显式地给出枚举元素的值,若缺省则按顺序依此为0,1,2,。3)可以将一个整数经强制类型转换后赋给枚举变量。4)枚举常量可以直接赋给整型变量。2.5 c
11、onst关键字 const关键字主要用来定义其数值不能改变的变量(所定义的仍然是变量)。例如:const double pai=3.14159;注意:当const用于指针变量定义时,const所处的位置不同,其所代表的意义也不同。 2.6 volatile关键字volatile关键字主要用于告诉系统不要进行最优化处理。 volatile int trip; void waittrip(void) trip=0; while (trip=0) /在trip=0时循环 ; 例如:在trip变量定义的前面加上volatile关键字以后,编译系统将不对trip变量进行优化处理,这样,就避免了由于优化处
12、理而可能带来的问题。2.7 typedef关键字 为了增加程序的可读性以及处理上的方便,C+语言还允许使用typedef关键字来定义新的类型名。typedef int word;typedef unsigned char byte;例如:它表示可以用word来定义int型变量,可以用byte来定义unsigned char型变量。注意 (1)typedef 关键字不能创造新的类型,只能为已有的类型增加一个类型名。(2)typedef 关键字只能用来定义类型名,而不能用来定义变量。 2.8 不同类型数据之间的转换 在进行整数、浮点数等数据的混合运算时,不同类型的数据要首先转换为同一种类型的数据,
13、然后才能进行运算,而这种转换最终都归结为整数和浮点数之间的转换问题。强制类型转换转换方式自动类型转换 2.8.1 自动类型转换 C+语言中的二元运算符(如算术运算符和关系运算符等)要求两个操作数的类型一致。如果类型不一致,则编译系统将进行自动类型转换。自动类型转换又被称为隐含类型转换,其转换规则与所使用的运算符有关。(1)算术运算符和关系运算符 基本原则是将低类型数据转换为高类型数据。 char = short int = int = unsigned int = long = unsigned long = float = double = long double按照如下顺序进行类型转换(2
14、)逻辑运算符 逻辑运算符的操作数必须是bool类型,如果不是bool类型则将自动被转换为bool类型,其转换规则为非0数据被转换为true,0数据被转换为false。(3)位运算符位运算符的操作数必须是整型,当存在不是整型的操作数时,则将按照上述规则进行类型转换。 (4)赋值运算符 赋值运算符的自动转换规则是将运算符右边的操作数类型转换为左边的操作数类型。整型数据和浮点型数据之间的自动转换规则1)当单、双精度浮点型数据赋给整型变量时,浮点数的小数部分将被舍弃。4)只要某个算术运算符的两个运算对象中有一个是浮点型数据,则运算将按照浮点数的运算规则来进行。3)如果某个算术运算符的两个运算对象都是整
15、数,那么,运算将按照整型数的运算规则来进行。2)当整型数据赋给浮点型变量时,在数值上不发生任何变化。2.8.2 强制类型转换 当自动类型转换达不到目的时,可以利用强制类型转换。强制类型转换的形式: (类型名) 表达式类型名 (表达式)或C+语言的强制类型转换符号 C语言的强制类型转换符号 注意 经强制类型转换后,得到的是一个所需类型的中间变量,原来变量的类型及其数值大小并没有发生任何变化。例如: z=float(x)/y; 2.9 运算符 C+语言中的运算符很多,主要包括算数运算符、关系运算符、逻辑运算符、位运算符以及增1减1运算符等。正确掌握这些运算符的使用方法是非常重要的。 2.9.1 算
16、术运算符 算术运算符+ 加法运算符 - 减法运算符 * 乘法运算符 / 除法运算符 % 取模(求余)运算符 注意 一个表达式中若有多个运算符,则计算是有先后顺序的,这种计算的先后顺序被称为相应运算符的优先级。应注意运算符的优先级。2.9.2 增 1、减 1运算符 增1运算符 +减1运算符 -前置运算符 +n,-m;后置运算符 n+, m- ; 都是单目运算符,其运算对象只能是整型或字符型变量,而不能是浮点型变量。语句举例1) x=n-; 相当于下面两个语句的运算: x=n; n=n-1; 对于变量n来讲,其运算结果不变对于变量x来讲,其运算结果不同2)x=-n; 相当于下面两个语句的运算: n
17、=n-1; x=n; 注 意 (1)增1、减1运算符只适用于变量,而不能用于常量或表达式,如,-5和(i+j)+等都是非法的。 (2)在只需对变量本身进行增1或减1操作而不关心整个表达式的值的情况下,前置运算和后置运算的效果完全相同。2.9.3 关系运算符关系运算符共有6种 小于 大于= 大于等于= 等于等于!= 不等于2.9.4 逻辑运算符 为了表示比较复杂的条件,需要将若干个关系表达式组合起来判断,C+语言提供的逻辑运算就是用于实现这一目的的。 ! 逻辑非 & 逻辑与 | 逻辑或逻辑运算符逻辑运算符运算规则! :单目运算符,当操作数为“真”时,运算结果为“假”;当操作数为“假”时,运算结果
18、为“真”。& :当两个操作数都为“真”时,运算结果为”真”,其它情况运算结果都为“假”。 | :只要有一个操作数为“真”,运算结果就为“真”,当两个操作数都为“假”时,运算结果才为“假”。2.9.5 位运算符 位运算的运算对象只能是整型数据和字符型数据,而不能是浮点型数据。正确地使用二进制位运算,将有助于节省内存空间和编写复杂的程序。int、short int、unsigned intlong int,等等包括 位运算符 运算符 说 明 例 子 按位与 a=b&0 x7FFFF; | 按位或 a=b|0 x80000; 按位异或 a=b0 x000F; 按位取反 a=a 左移 a=a 右移 a
19、=a2;其中,除了是单目运算符之外,其它的都是双目运算符。 1.“按位与”运算运算符用&表示。如果两个运算对象的对应二进制位都是1,则结果的对应位是1,否则为0。运算规则运算组合0 & 0=0 0 & 1=0 1 & 0=0 1 & 1=1 “按位与”运算的主要用途 (1)将数据中的某些位清零(2)可取出数据中的某些位2.“按位或”运算 运算符用|表示。只要两个运算对象的对应位有一个是1,则结果中的对应位是1,否则为0。运算规则运算组合0 | 0=0 0 | 1=1 1 | 0=1 1 | 1=1 “按位或”运算的主要用途 “按位或”运算通常用于对一个数据(变量)中的某些位置1,而其余位不发生
20、变化。 3.“按位异或”运算 运算符用表示。如果两个运算对象的对应位不相同,则结果的对应位为1,否则为0。运算规则运算组合0 0=0 0 1=1 1 0=1 1 1=0 “按位异或”运算的主要用途 (1)使数据中的某些位取反,即0变1,1变0 (2)同一个数据进行“异或”运算后,结果为0(3)“异或”运算具有(x y) y=x性质4.“按位取反”运算 运算符用 表示。将运算对象中各位的值取反,即将1变为0,将0变为1。运算规则运算组合 0=1 1=05. “左移”运算 运算符用 表示。将运算对象中的每个二进制位向右移动若干位,从右边移出去的低位部分被丢弃。对无符号数来讲:左边空出的高位部分补0
21、;对有符号数来讲:如果符号位为0(即正数),则空出的高位部分补0,否则,空出的高位部分补0还是补1,与所使用的计算机系统有关。运算规则在实际应用中,经常利用“右移”运算来进行除以2倍的操作。用途2.9.6 赋值运算符 赋值运算符用“”表示。它的作用是将赋值运算符右边的表达式的值赋给其左边的变量。x=a+b;例如: 复合赋值运算符 +语言允许在赋值运算符“=”之前加上其它运算符,以构成复合赋值运算符。 x*=y+1可写成x=x*(y+1)x+=5可写成x=x+5例如:复合赋值运算符 凡是二元运算符,一般都可以与赋值运算符一起组成复合赋值运算符。都是合法的复合赋值运算符。+= -= *= /= %
22、= &= |= = =例如2.9.7 条件运算符 当表达式1的值为“真”时,将表达式 2 的值赋给变量x;当表达式1的值为“假”时,将表达式 3 的值赋给变量x。 条件运算符用“?:”表示。表示形式x=表达式1 ? 表达式2 : 表达式3;例如: int x=10, y=20, z; z=(xy) ? x: y; / z=202.9.8 逗号运算符 逗号 “,” 的用法(1)作为分隔符使用(2)作为运算符使用(1)作为分隔符使用 例如: float f1,f2,f3; scanf(%f%f%f,&f1,&f2,&f3);(2)作为运算符使用(A)在for循环语句中,表达式1和表达式3都可以由多
23、个表达式组成,这些表达式之间使用逗号运算符连接起来。例如: for (sum=0,i=1;i”运算符。成员访问运算符有两个:2.10 基本语句 在高级程序设计语言中,计算机进行的各种运算操作都是通过语句来描述的。本节将介绍+语言中的一些基本语句,如条件语句、循环语句等。2.10.1 语句、复合语句和空语句在一个表达式的后面跟随一个分号就构成了语句。x=a+b;如:由左右花括号括起来的语句称为复合语句。其一般形式如下: 说明部分;语句部分 空语句就是不进行任何操作的语句,它仅由一个分号组成。在循环语句中,循环体部分可以不做任何操作,这时就可以用空语句来充当循环体(在循环语句中,循环体部分不能空缺
24、)。int i, sum;for (sum=0, i=1; i c; if (c=a&c=A&c=Z) cout It is a lettern; else cout It is not a lettern;说明:从键盘输入一个字符后,不要忘记按回车键。 4.3 switch语句 上面介绍的if语句,一般适用于两路选择,即在两个分支中选择一个执行。+ 语言中的switch 语句,提供了更方便地进行多路选择的功能。switch语句的一般形式如下所示: switch(表达式) case 常量表达式1: 语句1 case 常量表达式2: 语句2 case 常量表达式n: 语句n default: 语
25、句n+1 执行过程是:首先计算switch后面圆括号内表达式的值,若此值等于某个case后面的常量表达式的值,则转向该case后面的语句去执行;若表达式的值不等于任何case后面的常量表达式的值,则转向default后面的语句去执行,如果没有default部分,则将不执行switch语句中的任何语句,而直接转到switch语句后面的语句去执行。注意: (1)switch后面圆括号内的表达式的值和case后面的常量表达式的值,都必须是整型的或字符型的,不允许是浮点型的。(2)同一个switch语句中的所有case后面的常量表达式的值都必须互不相同。(3)switch语句中的case和defaul
26、t的出现次序是任意的。(4)switch语句中的“case 常量表达式”部分只起语句标号的作用, 而不进行条件判断。(5)每个case后面也可以是多个语句,不需要用花括号。(6)多个case的后面可以共用一组执行语句。【例2.2】从键盘输入一月号(1-12),并显示该月号的英文名称。#include stdio.hvoid main( ) int month; scanf(%d,&month); switch(month) case 1: printf(January); break; case 2: printf(February); break; case 3: printf(March)
27、; break; case 4: printf(April); break; case 5: printf(May); break; case 6: printf(June); break; case 7: printf(July); break; case 8: printf(August); break; case 9: printf(“September); break; case 10: printf(October); break; case 11:printf(November); break; case 12:printf(December); break; default: p
28、rintf(Data Error!); break; 说明:此程序属于多路选择问题,如果利用if语句的嵌套形式来编写的话,将会使程序的可读性变得很差 2.10.4 while语句 while (表达式)语句(即循环体部分) while语句的一般形式如下所示:注意: (1)while语句的特点是先判断表达式的值,然后执行循环体中的语句,因此,如果表达式的值一开始就为“假”,则循环体将一次也不执行。(2)当循环体由多个语句组成时,必须用左、右花括号括起来,使其形成复合语句。(3)为了使循环最终能够结束,而不至于产生“死循环”,每执行一次循环体,表达式的值都应该有所变化,这既可以在表达式本身中实现,
29、也可以在循环体中实现。【例2.3】利用while语句,计算1+1/2+1/4+1/100的值,并显示出来。#include stdio.hvoid main( ) int i; float sum; sum=1.0; i=2; while (i=100) sum +=1/(float)i; i+=2; printf(sum=%f,sum); 说明:该程序在循环体中进行累加运算时,必须要对变量i 进行强制类型转换,即利用(float)i使其变为浮点型中间变量后再参加运算,否则,由于i 中存放的是大于1的整型量,所以,1/i将按整型规则运算,其结果总是为0。 2.10.5 for语句for(表达式
30、1;表达式2;表达式3)语句(即循环体部分) for循环语句的一般形式如下所示:先求解表达式1,然后求解表达式2。若表达式2 的值为真,则执行循环体中的语句,接着求解表达式3,并再次求解表达式2, 若表达式2的值为真,再一次执行循环体,如此循环,直到表达式2 的值为假时退出循环,并转到下一语句执行。 执行过程for语句的功能可用while语句描述如下:表达式1;while(表达式2) 语句(循环体)表达式3;注意:(1)for语句中的任何一个表达式都可以省略,但其中的分号一定要保留, 当省略表达式2 时, 相当于“无限循环”(循环条件总为“真”), 这时就需要在for语句的循环体中设置相应的语
31、句来结束循环。(2)如果for语句的循环体部分是由多个语句组成的,则必须用左、 右花括号括起来,使其形成复合语句。(3)for语句中的表达式1和表达式3既可以是一个简单表达式, 也可以是由逗号连接的多个表达式,此时的逗号作为运算符使用。 (4)for语句的表达式1、表达式2和表达式3之间必须要用分号间隔。【例2.4】从键盘输入100个字符,分别统计其中字母(不区分大、小写)、数字字符和其它字符的个数。 #include stdio.hvoid main( ) char c; int i, letter, digit, other; letter=digit=other=0; for(i=0; i=a&c=A&c=0&c value, 其中value是大于1的任何数。 (注意:value的值不能太大,否则运行时间太长)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上海考从业资格证货运试题
- 2025年保山货运从业资格证题库
- 2025年呼和浩特货车从业资格考试题库
- 城市绿化照明规划
- 网络安全风险管理准则
- 餐饮业工会预算编制与控制
- 体育合作租赁合同
- 农村旅游停电景点安全
- 高空动物园设施维护合同
- 摄影棚作品市场推广策略
- 储能系统的BMS及电源系统设计
- PE 电熔焊接作业指导书
- 山泉水厂60000吨年山泉水生产线项目建设可行性研究报告
- 双块式无砟轨道道床板裂纹成因分析应对措施
- 安全生产领域刑事犯罪-两高司法解释PPT课件
- 土地增值税清算审核指南
- 死亡通知书模板
- 最新全球4G频段精编版
- 真速通信密拍暗访取证系统分册
- 基于阅读文本的写作课堂观察记录表
- 2018年建设工程质量检测企业组织架构、部门职能、商业模式、行业现状研究
评论
0/150
提交评论