a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 234|回复: 4

[C++] 2012年计算机二级C++数据类型、运算符和表达式考点总结

[复制链接]
发表于 2012-7-31 21:56:58 | 显示全部楼层 |阅读模式
第2章 数据类型、运算符和表达式
% ?' `, c  s* n# J
5 ]* y$ \% I  ?/ J- X1 |" H, r  2.1 C++语言的数据类型
7 h  o  g% v3 Q! s8 v% r  C+ +中的数据类型大体可以分成三类,它们是:基本类型、导出类型和用户定义类型。 % s0 b5 L% v# {
  1基本类型 0 C4 T) Y( `5 y4 b' P8 p, N* F2 N
  (1)逻辑型 % A5 t2 E$ c5 s1 w
  逻辑型用关键字bool表示,因此又称为bool型(布尔型)。逻辑型的取值范围只包含true和false,它们都是C+ +关键字。 * P0 [( k$ W7 B- ~1 c
  (2)字符型 / K+ X1 H8 G" T) Z+ n- Z
  字符型用关键字char表示,因此又称为char型,即把字符作为一种数据进行操作。字符型的取值范围是全部基本字符以及ASCII码集或扩充ASCII码集对应的全部符号。
( a' r/ [( {9 A- p4 f6 Q  (3)整型
1 _" R$ W+ H% @1 B8 ?  整型用关键字int表示,因此又称为int型,它是C+ +中最常用的数据类型,整型数据的取值范围是计算机所能表示的所有整数。
3 K. \5 D. O( m$ c0 D# [6 \  (4)浮点型 + k+ O4 m( \5 z) ~& @7 W( I: U
  浮点型包括单精度型和双精度型两种,单精度型用关键字float表示,又称float型;双精度型用关键字double表示,又称double型。它们对应着数学中实数的概念,即带有小数点的数。
7 z" Y2 ^3 ?& \" F3 @# ]) j8 L  浮点型数据的取值范围原则上是任意大小和精度的小数,但实际上不可能是任意大小的,而是有一定范围的。C+ +中的浮点数可以采用尾数加阶码的表示形式,表示的浮点数范围是:单精度型-3.4E38~3.4E38,但不能超过7位有效数字;双精度型-1.7977E308~1.7977E308 ,但不能超过15位有效数字。 : g$ @2 D8 m6 N
  (5)空值型 " \! U8 V8 q; S9 a* [9 J$ D* n
  空值型用关键字void表示,因此又称为void型。空值型的取值为空。C+ +中不存在void型的常量或变量。C+ +语言规定,所有函数说明都必须指明返回值类型,没有返回值的函数应说明为void类型的函数;另外,void类型还可以用来声明一个指针变量。 - E* V3 W8 S3 v2 |7 z
  2基本类型的派生类型 ' l1 o( V) N  ]( m: j8 r" w2 `3 q
  C+ +语言中,基本类型的字长及其取值范围可以放大和缩小,改变后的类型就叫做基本类型的派生类型。派生类型声明符是由基本类型关键字char、int、float、double前面加上类型修饰符组成的。类型修饰符包括:
* e6 m+ v+ T- O  short 短类型,缩短字长;
* p+ v  c; _% V  long长类型,加长字长; 4 [5 _8 c+ u4 m$ Z; Z& w
  signed有符号类型,取值范围包括正负值;   unsigned无符号类型,取值范围只包括正值;
回复

使用道具 举报

 楼主| 发表于 2012-7-31 21:56:59 | 显示全部楼层

2012年计算机二级C++数据类型、运算符和表达式考点总结

2.2 常量
8 D6 G4 m0 J' T4 d3 |  常量是指在程序执行过程中值不改变的量。常量有两种表示形式,即字面常量和符号常量。字面常量的类型是根据书写形式来区分的,它们的类型分别为:整型、浮点型、字符型、字符串型,每个字面常量的字面本身就是它的值。符号常量是一个标识符,在程序中必须遵循“先声明,后使用”的原则。
' e2 H5 D! c* h0 O' N6 v  1逻辑常量
1 S! ]; Y( N8 u# E6 c  逻辑常量主要用在逻辑运算中,此外,由于逻辑值对应着整数1或0,所以它也能够像其他整数一样出现在表达式中,参与各种整数运算。 : n! j+ A# T) z9 W6 t) Y
  2字符常量
' N( h  b4 n2 K5 }0 c  O  字符常量简称字符,它以单引号作为起止符号,中间有一个或若干个字符。这是一般意义上的字符常量;除此之外还有一种特殊形式的字符常量,以“\”开头的包括多个字符的字符序列也是符合规定的字符常量。但是,无论字符常量包含一个还是多个字符,每个字符常量只能表示一个字符,当字符常量的一对单引号内多于一个字符时,则将按照一定的规则解释为一个字符。 " l/ {7 Z9 I, u7 h2 }% L, S
  计算机中常用的ASCII字符也是字符型的数据,因为ASCII码值在0~127之间,正好落在字符型数据的取值范围之内。ASCII字符集中的每一个显示字符(个别字符除外)都可以作为一个字符常量。但是,对于一些特殊的字符,如回车、换行等具有控制功能的字符,或者像单引号、双引号等作为特殊标记使用的字符,就无法直接采用单引号作为起止符号来表示。C+ +中引入了“转义”字符的概念,其含义是:用反斜线“\”引导的下一个字符失去了原来的含义,而转义为具有某种控制功能的字符。另外,还允许用反斜线引导一个具有1至3位的八进制整数或一个以字母x(大、小写均可)作为开始标记的具有1至2位的十六进制整数,对应的字符就是以这个整数作为ASCII码的字符。
  B* L1 c: g0 p4 h  3整型常量
7 S: L2 _' a& x( q5 I3 W4 Q+ ~) ^* {% k  整型常量就是整型常数,简称整数,它有十进制、八进制和十六进制3种表示。 # Y6 b8 t8 e) a3 r7 c4 g8 R
  (1)十进制整数
/ I* S2 ?6 }- e. B5 w  十进制整数以正号(+)或负号(-)开头,由首位非0的一串十进制数字组成。若以正号开头则为正数,若以负号开头则为负数,若省略正负号,则默认为正数。
) w5 k. s( }9 ^  O  当一个十进制整数大于等于-2 147 483 648(即231),同时小于等于2 147 483 647(即-231-1)时,则被系统看作是整型常量;当在2 147 483 648~4 294 967 295即232-1范围之内时,则被看作是无符号整型常量;当超过上述两个范围时,则无法用C+ +整数类型表示,只有把它用实数(即带小数点的数)表示才能够被有效地存储和处理。 ' C- {. G: t$ Q3 u4 J
  (2)八进制整数
1 H9 J2 z6 _" `6 b  八进制整数以数字0开头,后面接若干个八进制数字(借用十进制数字中的0~7)。八进制整数前面不带正负号,全部默认为正数。
9 }8 K! A, s6 h7 j/ M4 N  当一个八进制整数大于等于0同时小于等于017777777777时,则称为整型常量,当大于等于020000000000同时小于等于037777777777时,则称为无符号整型数量。不要使用超过上述两个范围的八进制整数,因为没有与此相对应的C+ +整数类型。 + g% c* b* U  ~8 \
  (3)十六进制整数
1 t1 u3 o; |( l4 T( {  十六进制整数以数字0和字母x(大、小写均可)开头,后面接若干个十六进制数字(借用十进制数字0~9,字母A~F或a~f)。
; m* Q. M3 m2 p; J- C) x  当一个十六进制整数大于等于0同时小于等于0x7FFFFFFF时,则称为整型常量,当大于等于0x80000000同时小于等于0xFFFFFFFF时,则称为无符号整型常量,与八进制整数类似,超过上述两个范围的十六进制整数也没有与之相对应的C+ +整数类型,所以也不能使用它们。 1 X2 R' ?5 H0 f5 d+ \6 Q. P3 [+ U# t
  C+ +中的整型数据除了一般表示方法之外,还允许给它们添加后缀u或l。对于任一种进制的整数,若后缀为字母u(大、小写均可),则规定它为一个无符号整型(unsigned int)数,若后缀为字母l(大、小写均可),则规定它为一个长整型(long int)数。在一个整数的末尾,可以同时使用u和l,并且对排列无要求。
+ a1 `  W/ }0 u6 n3 G  4实型常量
; _1 K3 R  @9 t+ W  实型常量有十进制的定点和浮点两种表示方法,但并不存在其他进制的表示,下面分别介绍这两种表示方法。 3 h# N, {+ z, E$ J! Y
  (1)定点表示
. E. o' f/ W$ G. ^# u/ S+ Q  定点表示的实数简称定点数,实际上是以小数形式表示实数。定点表示的实数是由一个正号或负号(正号可以省略)后接若干个十进制数字和一个小数点所组成,这个小数点可以处在任何一个数字位的前面或后面。
0 B( g! Z. }9 Z4 R  (2)浮点表示 " r* D5 y8 J5 I- w5 N" v6 b1 h7 v
  浮点表示的实数简称浮点数,实际上是以指数形式表示实数。浮点表示的实数是由一个十进制整数或定点数后接一个字母E(大、小写均可)和一个1至3位的十进制整数所组成,字母E之前的部分称为该浮点数的尾数,之后的部分成为该浮点数的指数,该浮点数的值就是它的尾数乘以10的指数幂。 5 r' n' r5 o. E) a( c+ `1 l
  对于一个浮点数,若将它尾数中的小数点调整到最左边第一个非零数字的后面,则称它为规格化(或标准化)浮点数。
6 a- B- \6 [1 u9 j) X% w8 ^/ u  实型常量分为单精度(float)、双精度(double)和长双精度(long double)三类。一般float型数据在内存中占4个字节,提供7位有效数字;double型数据占8个字节,提供15位有效数字;long double型数据占10个字节,提供19位有效数字。对于一个定点数或浮点数,C+ +自动按一个双精度数(double型)来存储。若在一个定点数或浮点数之后加上字母F(大、小写均可),则自动按一个单精度数来存储。
5 Z% Y7 Q+ H% _  5枚举常量 + R! O7 E# o+ d0 n5 s9 n# `
  枚举常量是枚举类型中定义的值,即枚举植。枚举类型属于用户定义类型,用关键字enum表示,因此又称为enum类型。用户通常利用枚举类型定义程序中需要使用的一组相关符号常量。声明枚举类型的语法格式为: 0 w2 O7 x' a2 {! W$ V$ o6 \
  enum<类型名>{<枚举值表>};
; W4 U4 p9 s) C+ s. \1 u3 u  其中,enum是关键字,指出要定义的是枚举类型。<类型名>是标识符,即由用户给出的具体枚举类型名。<枚举值表>包含多个枚举值,它们用逗号分隔开,每个枚举值就是一个枚举常量。枚举值有两种定义形式:一是<值名>;二是<值名>=<整型常量>。
$ \: P4 ]% b& D" f) C  ^6 s  关于enum类型有四点说明: 7 m; p7 ^* K6 ?6 n
  (1)一个enum类型实际上是int类型的一个子集,其每一个枚举值代表一个整数。
* v1 k7 m" `' q' u, J9 x1 T6 I  (2)n个枚举值全部未赋常量值时,它们自左至右分别与整数0,1…n-1对应。
8 `  [. E0 T9 J2 e* f, Q  A  (3)若第i个枚举值赋常量值为m,则其未赋常量值的后续枚举值分别与整数m+1,m+2…对应,直到下一个赋了值的枚举值或结束。因此,为枚举值所赋的整型常量值应从左至右递增。
- x- V7 l1 R& i$ A4 H2 k  (4)枚举类型的声明也可作为成组声明若干整型符号常量的方法。也就是说,把每个要声明的符号常量作为一个枚举值,将各个枚举值合在一起定义成一个枚举类型。   由于枚举类型属于用户定义数据类型,一旦枚举类型被定义后就可以使用它来定义变量。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 21:57:00 | 显示全部楼层

2012年计算机二级C++数据类型、运算符和表达式考点总结

2.3 变量 & r6 u7 F, ~3 y7 Q
  1变量的定义
+ ]  D8 `% k) V. |" ^  变量的定义是通过变量声明语句来实现的,变量声明语句的一般格式为: 2 {/ Y! a5 N9 S, N; w; V7 `; y
  [<存储类>]<类型名><变量名>[=<初值表达式>],...;
$ g9 {. |9 n+ [; T9 u( [, H  <存储类>有四种,它们分别是auto、register、static、extern。 ' s& i$ x9 q8 w
  <类型名>为已存在的一种数据类型名称,如char,short,int,long,float,double等基本数据类型名,或者用户定义的数据类型名。
6 B. K* }. T$ ^9 K% `0 g3 F& L  <变量名>是用户定义的一个标识符,用来表示一个变量,该变量可以通过后面的可选项赋予一个值,称为给变量赋初值,也叫做对变量进行初始化。C+ +中标识符是区分大小写的,也就是说,大写字母和小写字母被认为是不同的字母。
, W* T% U; }# Y  变量名的命名遵循如下规则: 1 M# {* |' L  I6 `/ I0 l  [
  (1) 不能是C+ +关键字;   D5 r/ i  P4 K; `0 Z
  (2)第一个字符必须是字母或下划线;
& |* o) `# e6 B$ u# H1 E; e  (3)中间不能有空格;
  d8 j, p7 S/ s2 q' o  i! \  (4)变量名中不能包括;,′″+-之类的特殊符号。 , e* A  ^: s: b6 ^
  实际上变量名中除了能使用26个英文大小写字母和数字外,只能使用下划线“_”。 " g3 N/ ]$ C; r' U
  2变量的使用方式
8 p0 K2 `0 l1 l( t  (1)全局变量和局部变量 9 t* g8 }% i) y, e
  全局变量是在所有函数定义、类定义和程序块之外声明的变量。声明全局变量时如果在程序中不对它进行专门的初始化,该变量会被系统自动初始化为0。在程序的任何一个函数、类或程序块之内均可以访问全局变量。
" B$ c( g" D9 R) ]7 h0 @  局部变量是在某个函数定义、类定义或程序块之内声明的变量。局部变量只能在声明它的函数、类或程序块中被访问。
3 x- N$ {8 g* p0 L, j  (2)生存期与作用域 8 x- L( b; m8 `
  生存期是指从一个变量被声明且分配了内存开始,直到该变量声明语句失效,它占用的内存空间被释放为止。一个全局变量的生存期从它被声明开始,直到程序结束;一个局部变量的生存期从它被声明开始,直到包含它的最近的一个程序块结束。
' C1 z/ ^; w; N' N- b' v  作用域是指变量名可以代表该变量存储空间的使用范围。
+ s0 X- ]0 G9 Q2 x  |# ]  一般情况下,变量的作用域与其生存期一致,但由于C+ +语言允许在程序的不同部分为不同变量取同一名字,因此一个变量名的作用域可能小于其生存期。 " P; u. Y  S* Y+ g5 S& f1 w& Z
  (3)变量的存储类属性
3 o9 r9 A; f3 ^) V  }  在C+ +中变量还可以按存储分配方式的不同被划分为4种不同的存储类别,它们分别是: * V. Z2 w7 b( F& T: I0 K$ u
  ①auto变量:用关键字auto声明的局部变量称为自动变量。auto为变量声明时的默认存储类别,即在变量定义时,如果不显式标明存储类别,则系统自动按auto变量处理。auto变量所占用存储空间的分配和释放工作将由系统自动完成。
, T7 t) ^& o9 |; k1 Q  ②register变量:用关键字register声明的局部变量称为寄存器变量。register变量可能以寄存器作为其存储空间。声明寄存器变量时,关键字register的作用只能是建议(而不是强制)系统使用寄存器,原因是寄存器虽然存取速度快,但空间有限,当寄存器不够用时,该变量仍然按自动变量处理。 & ~, z. m; z% a4 m$ K$ ~, e
  ③static变量:用关键字static声明的变量称为静态变量。任何静态变量的生存期将延续到整个程序的终止。与全局变量一样,为静态变量分配的存储空间在整个程序运行过程中不再被释放;如果静态变量未被赋初值,系统将自动为其赋初值为0。 7 q1 v/ l1 ~& _$ w
  ④extern变量:用关键字extern声明的变量称为外部变量。变量一旦被声明为外部变量,系统就不必像一般变量那样为其分配内存,因为该变量已在这一局部的外面被定义。外部变量一般用于多个文件组成的程序中,有些变量在多个文件中被声明,但却是指同一变量。标明某一变量为外部变量可以避免为其重复分配内存。
  l7 k* U. Z4 g. n7 z) q- x  (4)typedef类型说明
% |2 k, @  m, `$ r% k  使用关键字typedef可以为已有类型名定义一个新类型名。其语法格式为: : x8 U) |' f* n0 f# R% u
  typedef<已有类型名><新类型名>
0 s7 [$ Z. O! W  typedef类型说明并没有真正地定义新的数据类型,它只是相当于给某个已有的数据类型起了一个别名。在规模较大的程序中为了提高代码可读性常采用这种形式。 # e% G. r1 t1 B: A% r: n
  3符号常量声明语句 : V9 L  b7 r) d7 i" Y- u, L$ V
  符号常量在使用之前必须先进行声明。符号常量声明语句同变量声明语句类似,其语法格式为:
; K' ^9 X7 y  e  const<类型名><符号常量名><初值表达式>……;
; e) A- o) [  A4 G  其中,关键字const指明这是一条符号常量声明语句,后面跟着符号常量的类型名,接着是符号常量名,它是一个用户定义的标识符,符号常量名之后为一个赋值号和一个初值表达式。由此可见,必须在声明符号常量的同时为其赋初值。该语句也可以声明多个符号常量。 4 {0 u6 |$ o& ~% u4 a! y0 A
  系统执行符号常量声明语句时,需要依次为每个符号常量分配存储单元并赋初值。一个符号常量被声明后,它的值就是声明所赋予的初值,作为常量,这个值以后将始终保持不变,因为系统只允许读取它的值,而不允许再次向它赋值。另外,在符号常量声明语句中,若<类型名>为int,则int可省略。 ' |. ?& }& Y' S5 o9 K( r
  符号常量声明语句既可以出现在函数体外,也可以出现在函数体内,这一点也跟变量定义语句相同。
9 {: }  g. o0 u1 M- b; c7 r1 v4 S  C+ +关键字中的true和false就是系统预先定义的两个符号常量,它们的值分别为1和0。使用符号常量往往可以提高程序的可读性和可维护性。由于符号常量和变量同样要求系统为其分配内存单元,所以可以把符号变量视为一种不允许赋值改变的或只读不写的变量,称其为const变量。 ! P- ^; y" p* g/ f) c
  4使用#define命令定义符号常量 . j8 c1 `8 v: u  j
  # define命令是一条预处理命令,也可以用它来定义符号常量。其命令格式为: & W  W( s4 v5 d( B' x2 R. W' t
  #define<符号常量名><字符序列>   <符号常量名>是用户定义的标识符,又称为宏或宏标识符;<字符序列>也是由用户给定的用来代替宏的一串字符序列,也称为宏替换体,它可以是数值常量、可计算值的表达式或字符串。宏被该命令定义后就可以使用在其后的程序中。当程序被编译时将把所有地方使用的宏标识符替换为对应的字符序列,并把宏命令删除掉。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 21:57:01 | 显示全部楼层

2012年计算机二级C++数据类型、运算符和表达式考点总结

 2.4 运算符和表达式 7 y/ x9 [) b' _0 m% ?( R
  1运算符和表达式的概念 5 G/ p0 @% T! v
  C+ +语言中的运算符又称为操作符,是用来对数据进行运算的符号。
' Y: A* y: g9 [' x  C+ +语言中的运算符可以根据其运算分量个数的多少分为单目(或一元)运算符、双目(或二元)运算符和三目(或三元)运算符3类。 * R: i" j: z+ y- ]* G
  运算符可能是一个字符,也可能由两个或三个字符组成,还有一些运算符是C+ +关键字。 6 P) E: u9 a3 k# @4 S3 f
  2运算类型与运算符
+ @2 J- e. @5 s  C+ +包含多种不同种类的运算。每一种运算与其他运算的区别在于以下3个方面: 8 U; K" K9 P- l4 c$ d+ x$ K
  (1)参加运算的运算分量的数量和类型; " T% W7 _. W& b2 Y3 Q9 c' m
  (2)运算结果的数据类型;
- |2 m$ ]  y9 p& ^5 O  (3)运算的具体操作。 - H) W" g, o" D$ v8 i* w& d4 y% Y
  3赋值运算 & j+ ?# y$ ~9 g* s* x
  赋值运算是一种双目运算,其形式为: & g  `: a% w9 U, z
  <变量名>=<表达式> / h( j5 p8 k4 b1 j8 Z
  右运算分量为一个表达式。“=”为赋值运算符(与数学中的等号含义不同)。左运算分量为与右运算分量类型相同的变量。 ! v/ ]# j% p# e# u2 o6 j8 }, C
  赋值运算的具体操作为:先计算右端表达式的值,然后把该值赋给左端变量。 $ ?7 T9 V) Y0 G8 z
  4算术运算符和算术表达式
2 `. v: H/ N. q5 S" i8 n% R! v  算术运算是指int型、float型、double(也包括char型)的数值类数据计算后,得到同一类型数据的运算。算术运算中所使用的运算符称为算术运算符。
! |( \4 a& O5 S7 |  d9 G7 Y  单目算术运算符包括:-(单减)、+ +(增量)和- -(减量)。 & ~4 R, |8 Y( ~3 H9 L* P
  单减运算的格式为:-<运算分量> - g# F6 ?5 W. A- q* H$ C; z
  单减运算相当于对运算分量取相反数,例如:-a,-(x+y)。 8 f1 o  r" {" m: f; T/ g' s
  增量运算有两种形式。 ! \$ F" a7 ?; V6 M8 U4 H* O
  前缀增量:+ +<运算分量>
1 B3 ^; O8 n+ j  后缀增量:<运算分量>+ +
' g- h3 w  S7 d/ _3 a' ]  双目算术运算符包括:+(加)、-(减)、*(乘)、/(除)和%(取余)。它们的含义与数学上相同。该类运算的运算分量为任一种数值类型,即任一种整数类型和任一种实数类型。 6 u6 @$ p/ c$ x( t
  由算术运算符(包括单目和双目)连接运算分量而组成的式子称为算术表达式。每个算术表达式的值为一个数值,其类型按照以下规则确定: % }& f% Q/ T) x! V! f% c
  (1)当参加运算的两个运算分量均为整型时(但具体类型可以不同,如一个为int型,另一个为char型),则运算结果为int型。 : g+ _# i5 c, f
  (2)当参加运算的两个运算分量中至少有一个是单精度型,并且另一个不是双精度型时,则运算结果为float型。
8 B& _' z* z" K0 Q' @' z  (3)当参加运算的两个运算分量中至少有一个是双精度型时,则运算结果为双精度型。
  {2 j1 A5 `, f* X) O. ]- L  5关系运算符和关系表达式 7 C: ^. V3 ^+ B) B% Q8 |
  C+ +语言提供了6种关系运算符,它们是: ) }6 z3 n5 K6 e" o
  <(小于)、< =(小于等于)、>(大于)、> =(大于等于)、= =(等于)、! =(不等于) " m- U) j$ C+ Q# O' N% P( Z
  这6种运算符都是双目运算符,用来比较两个运算分量的大小,运算结果为逻辑型值true或false(它们分别对应着整数1和0。由一个关系运算符连接前后两个数值表达式而构成的式子称为关系表达式,简称关系式。当一个关系式成立时,则计算结果为逻辑值是(true),否则为逻辑值假(false) $ u% N+ S: {9 z- i# f
  关系运算符的使用格式为:
) |0 O8 X. g. V  <运算分量><关系运算符><运算分量>
3 w/ k1 F& y; g4 z+ N( |  6逻辑运算符和逻辑表达式 , J4 A5 P" ^2 l
  C+ +语言提供了3种逻辑运算符,它们是:
6 @' w% Q$ A# p% V* n6 l  !(逻辑非)、&&(逻辑与)、(逻辑或)
8 i2 t! e! W) ^* I7 V# J  [3 `  其中,!为单目运算符,&&和为双目运算符。 % V  }' l! k  `* s6 o
  逻辑运算符的使用格式为:
, l3 |5 t0 V% ?. ^  <逻辑运算符!><运算分量> ) b9 {6 e- O  \2 E& @0 F9 D
  <运算分量><逻辑运算符&&或><运算分量>
) U2 @" X& k* T/ {) q6 Q8 [$ Q+ L  逻辑运算的具体操作步骤为:
' l0 O" O+ ^4 p- U2 D, y4 S  (1)计算两边运算分量的值;
9 Y7 c. ^; ]6 s3 ]" l8 @8 g6 n: X  (2)若运算分量的值不是逻辑型,则自动转换为逻辑型,即以0值为假(即false),非0值为真(即true);   (3)按不同逻辑运算符计算返回值。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 21:57:02 | 显示全部楼层

2012年计算机二级C++数据类型、运算符和表达式考点总结

7位运算
& g  t$ e4 e6 ]4 N2 |  C+ +提供6种位运算符。 ' O! ~8 h, v( U: U% {0 ^
  (1)“&”是按位与运算符,它将两个运算分量的对应二进制位进行与操作。基中,0 和0与得0,0和1与得0,1和0与得0,1和1与得1。
  q$ g/ q' O7 _  a' R8 O  (2)“|”是按位或运算符,它将两个运算分量的对应二进制位进行或操作。其中,0和0或得0,0和1或得1,1和0或得1,1和1或得1。
1 o5 s/ S" t. K2 G# o; D; b+ `- K0 w  (3)“^”是按位异或运算符,它将两个运算分量的对应二进制位进行异或操作。其中,0和0异或得0,0和1异或得1,1和0异或得1,1和1异或得0。
8 }1 n- b3 D& I1 V# g  (4)“>>”是按位右移运算符,由于右移的位数为右边运算分量的值,所以右边运算分量的值必须是一个整数。 / L) E; {% y0 T. d
  (5)“<<”是按位左移运算符,由于左移的位数为右边运算分量的值,所以右边运算分量的值必须是一个整数。
: c% r- ?6 r' h3 K, I2 j  (6)“~”是按位取反运算符,它将运算分量的对应二进制数的每一位进行取反操作。其中,0取反得1,1取反得0。
9 o. x, a. w9 q* Y7 `" h8 H( H  位运算符的使用格式: 0 l, j( ]' U# E4 X4 g
  <运算分量><双目运算符><运算分量> ; s) K. c+ \( w. F* {2 Q) e# a
  <单目运算符><运算分量> 5 M* W1 j( g! b* }. d
  8其他运算 # h; O5 x# l/ i2 L% Z% }
  (1)条件运算符 & p2 ?8 S$ o: S  t& J6 N# B. x4 w
  条件运算是C+ +中唯一的三目运算,与其对应的运算符?:称为条件运算符。条件运算符的使用格式为: 6 y2 }/ E& ?6 B
  <表达式1>?<表达式2>:<表达式3>
1 {1 y! x  y( q* H0 z1 n: t  当计算有条件运算符构成的表达式时,首先计算<表达式1>,若其值非0,则计算出<表达式2>的值,并用这个值作为整个表达式的值;若<表达式1>的值为0,则计算出<表达式3>的值,并用这个值作为整个表达式的值。
- Z* B: r( u. ?" A1 _" s  (2)逗号运算符 , e: G9 O8 {3 g
  C+ +中使用逗号运算符指明对多个表达式进行顺序求值。逗号运算符的使用格式为: / D+ H5 \' n! f' H; h# e! c
  <表达式1>,<表达式2>,……<表达式n> / K( ^6 ^& G* A  B
  其中,每个逗号都称为逗号运算符,整个式子称为逗号表达式。上述逗号表达式的求值步骤为:从左向右依次计算<表达式1>、<表达式2>…<表达式n>的值;将<表达式n>(即最右端的表达式)的值作为整个逗号表达式的值。
$ e1 y+ T$ w3 f. {4 L  (3)sizeof运算符
) z+ F1 W: D& v" R/ O8 F  使用运算符sizeof可以进行字长提取操作,因此sizeof运算符又称为字长提取符,它的使用格式为: 3 w" T! O: j4 _) K
  sizeof(<运算分量>) 1 ]# X: }* E/ a5 ]3 L
  其中,sizeof为关键字;<运算分量>既可以是一个类型名,也可以是一个表达式,当作为<运算分量>的表达式只包含一个变量名时,圆括号()可以省略。
$ v) [/ w2 |! f) q" F: u& d, W  字长提取运算的结果为一个整数,该整数表示指定的类型或变量的字节长度,即在内存中占用的字节(Byte)数。
! Z" m' ]7 ]6 S( T  (4)圆括号运算符
) s$ ~3 Q( b4 I! i9 K8 G8 z  C+ +中不仅将圆括号()归为运算符,而且根据不同的使用方式,可以对圆括号运算符的功能作出以下3种不同的解释: 3 Z6 H/ f: e. S4 N/ q
  ①圆括号用于函数调用。其格式为: # K) Y0 k' ]9 \7 _# s
  <函数名>(<实参表>)
4 `. P5 Y; I' _6 X4 [1 s5 X  ②圆括号用于强制类型转换。其格式为: , i7 j9 M2 V6 ^# V5 Y. u
  (<类型名>)<表达式> 8 ]$ o; p* ~( J; [
  ③圆括号用于类型构造。其格式为:
! Z! m8 e4 e" _# Y, W" o  <类型名>(<表达式>)
. g# f4 A0 m. H4 r  类型构造是指使用圆括号中<表达式>的值来构造一个具有目标数据类型的值,要构造的目标数据类型由<类型名>指定。
& Y* J8 k1 J! G7 O% w, A$ I  ④数组下标运算符:[](下标)。
, O! N* B$ T% I9 G  \6 w6 d5 P# j  ⑤指针运算符:*(取地址)和&(值引用)。 6 K) l, E0 v' y
  ⑥动态存储分配运算符:new(分配)和delete(释放)。 1 R& a9 U) F+ s; O2 w
  ⑦作用域限定运算符:::(类域或全局域)
4 |/ \( ]6 `  V' F7 [  9优先级和结合性 ( u& M) W; ^+ E- i
  根据运算符的优先级和结合性,可以将表达式的计算顺序规则总结为以下3条: - R; ?/ h) B+ X
  (1)优先计算带有括号的子表达式;   R2 \, t) V8 [3 j* A& J8 [/ _" F
  (2)在没有括号的部分,依照运算符优先级,由高到低进行计算;
( J# ?# p* |6 X. Y  (3)具有相同优先级的运算符,按照结合性规定,依次进行计算。   C+ +运算符分成17个优先级,优先级数字越小,表示运算符优先级越高。具有同一优先级数字的运算符,优先级相同。单目运算符、赋值运算符和复合赋值运算符是右结合的,其余所有运算符都是左结合的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-5 03:27 , Processed in 0.377099 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表