频道栏目
首页 > 考试 > 等级考试 > 二级 > C++ > 正文

2014年计算机二级C++考点解析:数据类型、运算符和表达式

2013-11-02 08:08:33           
收藏   我要投稿
 2.1 C++语言的数据类型 

  C+ +中的数据类型大体可以分成三类,它们是:基本类型、导出类型和用户定义类型。 

  1 基本类型 

  (1)逻辑型 

  逻辑型用关键字bool表示,因此又称为bool型(布尔型)。逻辑型的取值范围只包含true和false,它们都是C+ +关键字。 

  (2)字符型 

  字符型用关键字char表示,因此又称为char型,即把字符作为一种数据进行操作。字符型的取值范围是全部基本字符以及ASCII码集或扩充ASCII码集对应的全部符号。 

  (3)整型 

  整型用关键字int表示,因此又称为int型,它是C+ +中最常用的数据类型,整型数据的取值范围是计算机所能表示的所有整数。 

  (4)浮点型 

  浮点型包括单精度型和双精度型两种,单精度型用关键字float表示,又称float型;双精度型用关键字double表示,又称double型。它们对应着数学中实数的概念,即带有小数点的数。 

  浮点型数据的取值范围原则上是任意大小和精度的小数,但实际上不可能是任意大小的,而是有一定范围的。C+ +中的浮点数可以采用尾数加阶码的表示形式,表示的浮点数范围是:单精度型-3.4E38~3.4E38,但不能超过7位有效数字;双精度型-1.7977E308~1.7977E308 ,但不能超过15位有效数字。 

  (5)空值型 

  空值型用关键字void表示,因此又称为void型。空值型的取值为空。C+ +中不存在void型的常量或变量。C+ +语言规定,所有函数说明都必须指明返回值类型,没有返回值的函数应说明为void类型的函数;另外,void类型还可以用来声明一个指针变量。 

  2 基本类型的派生类型 

  C+ +语言中,基本类型的字长及其取值范围可以放大和缩小,改变后的类型就叫做基本类型的派生类型。派生类型声明符是由基本类型关键字char、int、float、double前面加上类型修饰符组成的。类型修饰符包括: 

  short 短类型,缩短字长; 

  long长类型,加长字长; 

  signed有符号类型,取值范围包括正负值; 

  unsigned无符号类型,取值范围只包括正值;

   2.3 变量 

  1 变量的定义 

  变量的定义是通过变量声明语句来实现的,变量声明语句的一般格式为: 

  [<存储类>]<类型名><变量名>[=<初值表达式>],...; 

  <存储类>有四种,它们分别是auto、register、static、extern。 

  <类型名>为已存在的一种数据类型名称,如char,short,int,long,float,double等基本数据类型名,或者用户定义的数据类型名。 

  <变量名>是用户定义的一个标识符,用来表示一个变量,该变量可以通过后面的可选项赋予一个值,称为给变量赋初值,也叫做对变量进行初始化。C+ +中标识符是区分大小写的,也就是说,大写字母和小写字母被认为是不同的字母。 

  变量名的命名遵循如下规则: 

  (1) 不能是C+ +关键字; 

  (2)第一个字符必须是字母或下划线; 

  (3)中间不能有空格; 

  (4)变量名中不能包括 ;,′″+-之类的特殊符号。 

  实际上变量名中除了能使用26个英文大小写字母和数字外,只能使用下划线“_”。 

  2 变量的使用方式 

  (1)全局变量和局部变量 

  全局变量是在所有函数定义、类定义和程序块之外声明的变量。声明全局变量时如果在程序中不对它进行专门的初始化,该变量会被系统自动初始化为0。在程序的任何一个函数、类或程序块之内均可以访问全局变量。 

  局部变量是在某个函数定义、类定义或程序块之内声明的变量。局部变量只能在声明它的函数、类或程序块中被访问。 

  (2)生存期与作用域 

  生存期是指从一个变量被声明且分配了内存开始,直到该变量声明语句失效,它占用的内存空间被释放为止。一个全局变量的生存期从它被声明开始,直到程序结束;一个局部变量的生存期从它被声明开始,直到包含它的最近的一个程序块结束。 

  作用域是指变量名可以代表该变量存储空间的使用范围。 

  一般情况下,变量的作用域与其生存期一致,但由于C+ +语言允许在程序的不同部分为不同变量取同一名字,因此一个变量名的作用域可能小于其生存期。 

  (3)变量的存储类属性 

  在C+ +中变量还可以按存储分配方式的不同被划分为4种不同的存储类别,它们分别是: 

  ①auto变量:用关键字auto声明的局部变量称为自动变量。auto为变量声明时的默认存储类别,即在变量定义时,如果不显式标明存储类别,则系统自动按auto变量处理。auto变量所占用存储空间的分配和释放工作将由系统自动完成。 

  ②register变量:用关键字register声明的局部变量称为寄存器变量。register变量可能以寄存器作为其存储空间。声明寄存器变量时,关键字register的作用只能是建议(而不是强制)系统使用寄存器,原因是寄存器虽然存取速度快,但空间有限,当寄存器不够用时,该变量仍然按自动变量处理。 

  ③static变量:用关键字static声明的变量称为静态变量。任何静态变量的生存期将延续到整个程序的终止。与全局变量一样,为静态变量分配的存储空间在整个程序运行过程中不再被释放;如果静态变量未被赋初值,系统将自动为其赋初值为0。 

  ④extern变量:用关键字extern声明的变量称为外部变量。变量一旦被声明为外部变量,系统就不必像一般变量那样为其分配内存,因为该变量已在这一局部的外面被定义。外部变量一般用于多个文件组成的程序中,有些变量在多个文件中被声明,但却是指同一变量。标明某一变量为外部变量可以避免为其重复分配内存。 

  (4)typedef类型说明 

  使用关键字typedef可以为已有类型名定义一个新类型名。其语法格式为: 

  typedef<已有类型名><新类型名> 

  typedef类型说明并没有真正地定义新的数据类型,它只是相当于给某个已有的数据类型起了一个别名。在规模较大的程序中为了提高代码可读性常采用这种形式。 

  3 符号常量声明语句 

  符号常量在使用之前必须先进行声明。符号常量声明语句同变量声明语句类似,其语法格式为: 

  const<类型名><符号常量名><初值表达式>……; 

  其中,关键字const指明这是一条符号常量声明语句,后面跟着符号常量的类型名,接着是符号常量名,它是一个用户定义的标识符,符号常量名之后为一个赋值号和一个初值表达式。由此可见,必须在声明符号常量的同时为其赋初值。该语句也可以声明多个符号常量。 

  系统执行符号常量声明语句时,需要依次为每个符号常量分配存储单元并赋初值。一个符号常量被声明后,它的值就是声明所赋予的初值,作为常量,这个值以后将始终保持不变,因为系统只允许读取它的值,而不允许再次向它赋值。另外,在符号常量声明语句中,若<类型名>为int,则int可省略。 

  符号常量声明语句既可以出现在函数体外,也可以出现在函数体内,这一点也跟变量定义语句相同。 

  C+ +关键字中的true和false就是系统预先定义的两个符号常量,它们的值分别为1和0。使用符号常量往往可以提高程序的可读性和可维护性。由于符号常量和变量同样要求系统为其分配内存单元,所以可以把符号变量视为一种不允许赋值改变的或只读不写的变量,称其为const变量。 

  4 使用#define命令定义符号常量 

  # define命令是一条预处理命令,也可以用它来定义符号常量。其命令格式为: 

  #define<符号常量名><字符序列> 

  <符号常量名>是用户定义的标识符,又称为宏或宏标识符;<字符序列>也是由用户给定的用来代替宏的一串字符序列,也称为宏替换体,它可以是数值常量、可计算值的表达式或字符串。宏被该命令定义后就可以使用在其后的程序中。当程序被编译时将把所有地方使用的宏标识符替换为对应的字符序列,并把宏命令删除掉。 

 2.4 运算符和表达式 

  1 运算符和表达式的概念 

  C+ +语言中的运算符又称为操作符,是用来对数据进行运算的符号。 

  C+ +语言中的运算符可以根据其运算分量个数的多少分为单目(或一元)运算符、双目(或二元)运算符和三目(或三元)运算符3类。 

  运算符可能是一个字符,也可能由两个或三个字符组成,还有一些运算符是C+ +关键字。 

  2 运算类型与运算符 

  C+ +包含多种不同种类的运算。每一种运算与其他运算的区别在于以下3个方面: 

  (1)参加运算的运算分量的数量和类型; 

  (2)运算结果的数据类型; 

  (3)运算的具体操作。 

  3 赋值运算 

  赋值运算是一种双目运算,其形式为: 

  <变量名>=<表达式> 

  右运算分量为一个表达式。“=”为赋值运算符(与数学中的等号含义不同)。左运算分量为与右运算分量类型相同的变量。 

  赋值运算的具体操作为:先计算右端表达式的值,然后把该值赋给左端变量。 

  4 算术运算符和算术表达式 

  算术运算是指int型、float型、double(也包括char型)的数值类数据计算后,得到同一类型数据的运算。算术运算中所使用的运算符称为算术运算符。 

  单目算术运算符包括:-(单减)、+ +(增量)和- -(减量)。 

  单减运算的格式为:-<运算分量> 

  单减运算相当于对运算分量取相反数,例如:-a,-(x+y)。 

  增量运算有两种形式。 

  前缀增量:+ +<运算分量> 

  后缀增量:<运算分量>+ + 

  双目算术运算符包括:+(加)、-(减)、*(乘)、/(除)和%(取余)。它们的含义与数学上相同。该类运算的运算分量为任一种数值类型,即任一种整数类型和任一种实数类型。 

  由算术运算符(包括单目和双目)连接运算分量而组成的式子称为算术表达式。每个算术表达式的值为一个数值,其类型按照以下规则确定: 

  (1)当参加运算的两个运算分量均为整型时(但具体类型可以不同,如一个为int型,另一个为char型),则运算结果为int型。 

  (2)当参加运算的两个运算分量中至少有一个是单精度型,并且另一个不是双精度型时,则运算结果为float型。 

  (3)当参加运算的两个运算分量中至少有一个是双精度型时,则运算结果为双精度型。 

  5 关系运算符和关系表达式 

  C+ +语言提供了6种关系运算符,它们是: 

  <(小于)、< =(小于等于)、>(大于)、> =(大于等于)、= =(等于)、! =(不等于) 

  这6种运算符都是双目运算符,用来比较两个运算分量的大小,运算结果为逻辑型值true或false(它们分别对应着整数1和0。由一个关系运算符连接前后两个数值表达式而构成的式子称为关系表达式,简称关系式。当一个关系式成立时,则计算结果为逻辑值是(true),否则为逻辑值假(false) 

  关系运算符的使用格式为: 

  <运算分量><关系运算符><运算分量> 

  6 逻辑运算符和逻辑表达式 

  C+ +语言提供了3种逻辑运算符,它们是: 

  !(逻辑非)、&&(逻辑与)、 (逻辑或) 

  其中,!为单目运算符,&&和 为双目运算符。 

  逻辑运算符的使用格式为: 

  <逻辑运算符!><运算分量> 

  <运算分量><逻辑运算符&&或 ><运算分量> 

  逻辑运算的具体操作步骤为:  

  (1)计算两边运算分量的值; 

  (2)若运算分量的值不是逻辑型,则自动转换为逻辑型,即以0值为假(即false),非0值为真(即true); 

  (3)按不同逻辑运算符计算返回值。 

  7 位运算 

  C+ +提供6种位运算符。 

  (1)“&”是按位与运算符,它将两个运算分量的对应二进制位进行与操作。基中,0 和0与得0,0和1与得0,1和0与得0,1和1与得1。 

  (2)“|”是按位或运算符,它将两个运算分量的对应二进制位进行或操作。其中,0和0或得0,0和1或得1,1和0或得1,1和1或得1。 

  (3)“^”是按位异或运算符,它将两个运算分量的对应二进制位进行异或操作。其中,0和0异或得0,0和1异或得1,1和0异或得1,1和1异或得0。 

  (4)“>>”是按位右移运算符,由于右移的位数为右边运算分量的值,所以右边运算分量的值必须是一个整数。 

  (5)“<<”是按位左移运算符,由于左移的位数为右边运算分量的值,所以右边运算分量的值必须是一个整数。 

  (6)“~”是按位取反运算符,它将运算分量的对应二进制数的每一位进行取反操作。其中,0取反得1,1取反得0。 

  位运算符的使用格式: 

  <运算分量><双目运算符><运算分量> 

  <单目运算符><运算分量>  

 8 其他运算 

  (1)条件运算符 

  条件运算是C+ +中唯一的三目运算,与其对应的运算符?:称为条件运算符。条件运算符的使用格式为: 

  <表达式1>?<表达式2>:<表达式3> 

  当计算有条件运算符构成的表达式时,首先计算<表达式1>,若其值非0,则计算出<表达式2>的值,并用这个值作为整个表达式的值;若<表达式1>的值为0,则计算出<表达式3>的值,并用这个值作为整个表达式的值。 

  (2)逗号运算符 

  C+ +中使用逗号运算符指明对多个表达式进行顺序求值。逗号运算符的使用格式为: 

  <表达式1>,<表达式2>,……<表达式n> 

  其中,每个逗号都称为逗号运算符,整个式子称为逗号表达式。上述逗号表达式的求值步骤为:从左向右依次计算<表达式1>、<表达式2>…<表达式n>的值;将<表达式n>(即最右端的表达式)的值作为整个逗号表达式的值。 

  (3)sizeof运算符 

  使用运算符sizeof可以进行字长提取操作,因此sizeof运算符又称为字长提取符,它的使用格式为: 

  sizeof(<运算分量>) 

  其中,sizeof为关键字;<运算分量>既可以是一个类型名,也可以是一个表达式,当作为<运算分量>的表达式只包含一个变量名时,圆括号()可以省略。 

  字长提取运算的结果为一个整数,该整数表示指定的类型或变量的字节长度,即在内存中占用的字节(Byte)数。 

  (4)圆括号运算符 

  C+ +中不仅将圆括号()归为运算符,而且根据不同的使用方式,可以对圆括号运算符的功能作出以下3种不同的解释: 

  ①圆括号用于函数调用。其格式为: 

  <函数名>(<实参表>) 

  ②圆括号用于强制类型转换。其格式为: 

  (<类型名>)<表达式> 

  ③圆括号用于类型构造。其格式为: 

  <类型名>(<表达式>) 

  类型构造是指使用圆括号中<表达式>的值来构造一个具有目标数据类型的值,要构造的目标数据类型由<类型名>指定。 

  ④数组下标运算符:[](下标)。 

  ⑤指针运算符:*(取地址)和&(值引用)。 

  ⑥动态存储分配运算符:new(分配)和delete(释放)。 

  ⑦作用域限定运算符:::(类域或全局域) 

  9 优先级和结合性 

  根据运算符的优先级和结合性,可以将表达式的计算顺序规则总结为以下3条: 

  (1)优先计算带有括号的子表达式; 

  (2)在没有括号的部分,依照运算符优先级,由高到低进行计算; 

  (3)具有相同优先级的运算符,按照结合性规定,依次进行计算。 

  C+ +运算符分成17个优先级,优先级数字越小,表示运算符优先级越高。具有同一优先级数字的运算符,优先级相同。单目运算符、赋值运算符和复合赋值运算符是右结合的,其余所有运算符都是左结合的。

上一篇:2014年计算机二级C++考点解析:基本控制结构
下一篇:2014年计算机二级C++考点解析:C++语言概述
相关文章
图文推荐
文章
推荐
热门新闻

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站