软考程序员章节常考知识点复习笔记第八章汇总.docx
《软考程序员章节常考知识点复习笔记第八章汇总.docx》由会员分享,可在线阅读,更多相关《软考程序员章节常考知识点复习笔记第八章汇总.docx(20页珍藏版)》请在冰豆网上搜索。
软考程序员章节常考知识点复习笔记第八章汇总
2013年软考程序员章节常考知识点复习笔记第八章
查看汇总>>>2013年软考程序员章节常考知识点复习笔记汇总
12、C++操作符优先级:
记忆方法:
去掉一个最高的,去掉一个最低的,剩下的是一、二、三、赋值;双目运算符中,顺序为算术、关系和逻辑,移位和逻辑位插入其中。
--摘自《C语言程序设计实用问答》
问题:
如何记住运算符的15种优先级和结合性?
解答:
C语言中运算符种类比较繁多,优先级有15种,结合性有两种。
如何记忆两种结合性和15种优先级?
下面讲述一种记忆方法。
结合性有两种,一种是自左至右,另一种是自右至左,大部分运算符的结合性是自左至右,只有单目运算符、三目运算符的赋值运算符的结合性自右至左。
优先级有15种,记忆方法如下:
记住一个最高的:
构造类型的元素或成员以及小括号。
记住一个最低的:
逗号运算符。
剩余的是一、二、三、赋值——意思是单目、双目、三目和赋值运算符。
在诸多运算符中,又分为:
算术、关系、逻辑。
两种位操作运算符中,移位运算符在算术运算符后边,逻辑位运算符在逻辑运算符的前面。
再细分如下:
算术运算符*,/,%高于+,-。
关系运算符中:
>,>=,<和<=高于==,!
=。
逻辑运算符中,除了逻辑求反(!
)是单目外,逻辑与(&&)高于逻辑或(||)。
逻辑位运算符中,除了逻辑按位求反(~)外,按位与(&)高于按位半加(^),高于按位或(|)。
Precedence
Operator
Description
Example
Overloadable
Associativity
1
:
:
Scoperesolutionoperator
Class:
:
age=2;
no
lefttoright
2
()
Functioncall
printf(“Helloworld\n”);
yes
lefttoright
()
Memberinitalization
c_tor(intx,inty):
_x(x),_y(y*10){}
yes
[]
Arrayaccess
array[4]=2;
yes
->
Memberaccessfromapointer
ptr->age=34;
yes
.
Memberaccessfromanobject
obj.age=34;
no
++
Post-increment
for(inti=0;i<10;i++)cout<
yes
--
Post-decrement
0;i--)cout<
yes
dynamic_cast
Runtime-checkedtypeconversion
(x);
no
static_cast
Uncheckedtypeconversion
(x);
no
reinterpret_cast
Reinterpretingtypeconversion
intconst*p=reinterpret_cast(0x1234);
no
const_cast
Castaway/Addconstness
int*q=const_cast(p);
no
typeid
Gettypeinformation
std:
:
type_infoconst&t=typeid(x);
no
3
!
Logicalnegation
if(!
done)...
yes
righttoleft
not
Alternatespellingfor!
~
Bitwisecomplement
flags=~flags;
yes
compl
Alternatespellingfor~
++
Pre-increment
for(i=0;i<10;++i)cout<
yes
--
Pre-decrement
0;--i)cout<
yes
-
Unaryminus
inti=-1;
yes
+
Unaryplus
inti=+1;
yes
*
Dereference
intdata=*intPtr;
yes
&
Addressof
int*intPtr=&data;
yes
sizeof
Size(ofthetype)oftheoperandinbytes
size_ts=sizeof(int);
no
new
Dynamicmemoryallocation
long*pVar=newlong;
yes
new[]
Dynamicmemoryallocationofarray
long*array=newlong[20];
yes
delete
Deallocatingthememory
deletepVar;
yes
delete[]
Deallocatingthememoryofarray
delete[]array;
yes
(type)
Casttoagiventype
inti=(int)floatNum;
yes
4
->*
Memberpointerselector
ptr->*var=24;
yes
lefttoright
.*
Memberobjectselector
obj.*var=24;
no
5
*
Multiplication
inti=2*4;
yes
lefttoright
/
Division
floatf=10.0/3.0;
yes
%
Modulus
intrem=4%3;
yes
6
+
Addition
inti=2+3;
yes
lefttoright
-
Subtraction
inti=5-1;
yes
7
<<
Bitwiseshiftleft
intflags=33<<1;
yes
lefttoright
>>
Bitwiseshiftright
>1;
yes
8
<
Comparisonless-than
if(i<42)...
yes
lefttoright
<=
Comparisonless-than-or-equal-to
if(i<=42)...
yes
>
Comparisongreater-than
if(i>42)...
yes
>=
Comparisongreater-than-or-equal-to
if(i>=42)...
yes
9
==
Comparisonequal-to
if(i==42)...
yes
lefttoright
eq
Alternatespellingfor==
!
=
Comparisonnot-equal-to
if(i!
=42)...
yes
not_eq
Alternatespellingfor!
=
10
&
BitwiseAND
flags=flags&42;
yes
lefttoright
bitand
Alternatespellingfor&
11
^
BitwiseexclusiveOR(XOR)
flags=flags^42;
yes
lefttoright
xor
Alternatespellingfor^
12
|
Bitwiseinclusive(normal)OR
flags=flags|42;
yes
lefttoright
bitor
Alternatespellingfor|
13
&&
LogicalAND
if(conditionA&&conditionB)...
yes
lefttoright
and
Alternatespellingfor&&
14
||
LogicalOR
if(conditionA||conditionB)...
yes
lefttoright
or
Alternatespellingfor||
15
?
: