C++学习第4篇-运算符介绍
2012-02-25 16:58
281 查看
1. 优先级和结合
运算优先级-运算符的运算顺序。C++中的所有运算符都赋予了特定的优先级。
运算结合-同等优先级的运算符的运算方向,即向左/向右计算。
C++所有运算符
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)本内容仅仅提供参考,任何参考该内容造成任何的后果,均与原创作者和本博客作者无关!】
运算优先级-运算符的运算顺序。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++ |
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)本内容仅仅提供参考,任何参考该内容造成任何的后果,均与原创作者和本博客作者无关!】
相关文章推荐
- 在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习
- C++中不能被重载的运算符介绍
- 学习C++最经典书籍介绍
- C++学习 std::map介绍
- c++的学习和好书介绍
- C++学习笔记-1-自增和自减运算符
- C++入门学习——虚函数表介绍
- 关于C++中各种运算符的总结和简要介绍
- C++知识学习--虚函数介绍和使用
- 在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习
- 【转载】C++程序设计之四书五经/C++学习书籍介绍
- 学习C++最经典书籍介绍
- C++学习总结(十四)——类的运算符的重载原理,以及重载的实例
- C++的4个类型转换运算符的用法介绍
- 【C++ 学习笔记小程序05】 const限定符 浮点数 算数运算符
- C++中不能被重载的运算符介绍
- C++按位异或运算符的使用介绍
- C++学习笔记(new delete运算符)
- 学习C++ -> 变量、常量与运算符
- C语言学习笔记 运算符初步介绍