您的位置:首页 > 编程语言 > C语言/C++

C++学习第4篇-运算符介绍

2012-02-25 16:58 281 查看
1. 优先级和结合

运算优先级-运算符的运算顺序。C++中的所有运算符都赋予了特定的优先级。

运算结合-同等优先级的运算符的运算方向,即向左/向右计算。

C++所有运算符

级别/结合运算符描述示例
1 None::全局范围(单元)::g_nGlobalValueVar=5
::类范围(两元)Class::m_nValue=5
2 L->R()括号(x + y) * 2
()函数调用Add(x, y)
()隐式赋值int nValue(5)
[]数组aValue[3] = 2
.对象成员访问cObject.m_nValue = 4
->指针对象成员访问pObject.m_nValue = 4
++后缀自增nValue ++
--后缀自减nValue --
typeid运行时类型信息typeid(cClass).name()
const_cast静态转换const_cast<int*>(pnConstValue)
dynamic_cast运行时类型检查转换dynamic_cast<Shap*>(pShape)
reinterpret_cast

转换到另一种类型reinterpret_cast<Class2>(cClass1)

static_cast编译时类型检查转换fValue=static_cast<float>(nValue)
3 R->L+单元加nValue=+5
-单元减nValue=-5
++前缀自增++nValue
--前缀自减--nValue
!逻辑非if(!bValue)
~位运算非nFlags=~nFlags
(type)C形类型转换float fValue=(float)nValue
sizeof字节数sizeof(int)
&取地址address=&nValue
*指向nValue=*pnValue
new动态内存分配int *pnValue=new int ;
new[]动态数组分配int *panValue=new int[5] ;
delete动态内存清除delete pnValue
delete[]动态数组清除delete[] panValue
4 L->R->*指针成员选择器pObject->*pnValue=4
-*对象成员选择器cObject->.*pnValue=4
5 L->R*相乘int nValue=2*3
/相除float fValue=5.0/3.0
%求余int nRemainder=10%3
6 L->R+相加int nValue=2+3
-相减int nValue=5-2
7 L->R<<位左移int nFlags=17<<2
>>位右移int nFlags=17>>2
8 L->R<小于if(x<y)
<=小于等于if(x<=y)
>大于if(x>y)
>=大于等于if(x>=y)
9 L->R==等于if(x==y)
!=不等于if(x!=y)
10 L->R&位运算与nFlags=nFlags&17
11 L->R^位运算异或nFlags=nFlags^17
12 L->R|位运算或nFlags=nFlags|17
13 L->R&&逻辑与if(bValue1 && bValue2)
14 L->R||逻辑或if(bValue1 || bValue2)
15 L->R?:问号运算return (x>y)? x:y
16 R->L=赋值int nValue=5
*=乘法赋值nValue *= 5
/=除法赋值nValue /= 5
%=求余赋值nValue %= 5
+=求和赋值nValue += 5
-=减法赋值nValue -= 5
<<=左移位赋值nFlags <<=2
>>=右移位赋值nFlags >>=2
&逻辑与赋值nFlags &= 17
|=逻辑或赋值nFlags |= 17
^=逻辑异或赋值nFlags ^= 17
17 L->R,逗号运算i++, j++, k++
2. 算术运算
1)单元运算符:+、-
置于变量或者数值的前面。
2)两元运算符:+、-、*、/、%
注意:/被除数不能为0;%只用于整型求余,注意负数。
3)运算赋值:+=、-=、*=、/=、%=
3. 自增自减运算:++、--
1)前缀:++x,先运算后赋值
2)后缀:x++,先复制后运算
3)边界效应:Add(x, ++x),应尽量避免。
4. 求字节、逗号和问号运算
1)sizeof(type)、sizeof(variable)
2),运算,常用于for循环中,如for(int iii=1, jjj=10;iii<=10;iii++, jjj--)
3)C? X:Y,可以代替简单的if/else语句
5. 关系运算符:>、>=、<、<=、==、!=
在比较==时,一般是fabs(X-Y) <= (10^-6)*fabs(X)。
6. 逻辑运算符:!、&&、||
注意:&&运算采用短路运算,即若第一个为false,即不判断第二个;若第一个为true,才继续判断第二个。
7. 二进制和十进制的转换
二->十,按指数相乘求和;十->二,按指数相除,有小数点的,采用乘2的方法。
对于负数的二->十,一般先求反后加1;或者左数第一个1不变,左边其他求反。
8. 位运算 :<<、>>、&、^、|
1)位运算通常见于地址运算,即和计算机内存地址相关;
2)位运算赋值:<<=、>>=、&=、^=、|= 。

【免责特此声明:

1)本内容可能是来自互联网的,或经过本人整理的,仅仅代表了互联网和个人的意见和看法!

2)本内容仅仅提供参考,任何参考该内容造成任何的后果,均与原创作者和本博客作者无关!】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: