【整理】c++中的操作符们
来源:互联网 发布:unity3d 刚体移动 编辑:程序博客网 时间:2024/06/02 03:50
1、算术操作符
举例:( +、-、*、/、% )
注意要点:
a、 优先性和结合性。 如 a * b + c * d ,结合时从左向右,先和乘除结合,再和加法结合。 ( a * b ) + ( c * d )
b、在 / 和 % 操作中,倘若仅有一个操作数为负值 ,则返回结果依赖机器类型
2、关系和逻辑操作符
举例: !、 < 、 == 、 && 等。返回值为BOOL类型
注意点:
a、 && ,|| 操作符,自左向右结合,仅当由左操作数无法确定表达式结果时,才会接着计算右操作数的值
比如
class ToyBear{
int color;
int size;
};
………………
………………
ToyBear Winne;
if( ( Winne.color != Brown ) && ( Winne.Size != XX ) )
{
…………
…………
}
倘若 Winne.color 为 Brown。则左操作数值为 False , 表达式“ ( Winne.color != Brown ) && ( Winne.Size != XX ) ” 的值确定为False 。不再计算右操作符的值,表达式直接返回False
b、关系表达式不应串接
如 i < j < k 虽然想表达 "( i < j ) && ( j < k ) " ,但实际上表达的是 ( i < j ) < k
具体来说,关系表达式返回BOOL类型,所以此表达式为 ( True / False ) < k
只要 k 大于左操作符,表达式为True
但这并非我们想看到的结果。
所以,请不要使用 “ i < j < k ”这样的串接
3、位操作符、赋值操作符
没什么要特别注意的地方
4、 自增自减操作符
前自增操作符和后自增操作符的区别
1、前者将修改后的值作为结果返回,后者将修改前的值作为结果返回
2、从编译角度来说,前置操作只要加一后返回加一的结果,后者需要保存操作数原先的值。后者需要更多的额外工作
5、箭头、点操作符
用于访问类类型对象的成员
前者适用于类类型的迭代器,后者适用于类类型本身
例如
vector< string > vec;
vector< string >::iterator iter = vec.begin() ;
则
iter -> empty();
和
( *iter ).empty();
等价
6、条件操作符
形式为:cond ? expr1 : expr2 ; 可视作 if () else() 的一种变形
常用在函数的返回值中。
7、sizeof操作符
用于获取对象或者类型名的长度。
例如
class Gun{
int Wt;
int Size;
int Branch;
};
Gun Rifle;
sizeof ( Gun )
sizeof ( Rifle )
都是合法的表达式
注意点:
数组名可以代表整个数组,也可以作为指向数组中第一个元素的指针。
例如 int n_Array[ 10 ];
sizeof( n_Array ) / sizeof( *n_Array )
sizeof( n_Array ) 的n_Array是数组名,表达式结果为数组所占的存储空间的字节数
sizeof( *n_Array ) 的结果是 n_Array 指向的对象( 数组中的第一个元素 ) 所占存储空间的字节数
所以表达式的结果为数组中所含的元素数目
8、逗号表达式
说明:
expr1 , expr2 ,expr3 …………;
表达式从左向右执行,返回值为最右表达式的值。
常见于for( ) 循环, 其他场景中较为少见。
- 【整理】c++中的操作符们
- C语言操作符整理
- c中的操作符
- C语言基础操作符整理~
- 整理C/C++中的复合运算符
- c语言中的操作符
- C语言中的操作符
- C语言中的操作符
- C语言中的操作符
- jQuery中的DOM操作整理
- opencv中的矩阵操作整理
- [C++]常用字符串操作整理
- Python语言中的关键字及操作格式符整理
- .net 之 LINQ中的查询操作符的整理
- c中的sizeof知识整理
- C#中的checked、unchecked操作符
- C#中的checked、unchecked、lock操作符
- C#中的checked、unchecked操作符
- 从select的一个死循环谈epoll的ET模式
- Android SwitchButton(滑动开关)
- sublime text3 安装插件
- srvctl命令详解
- 初踏ACM之路
- 【整理】c++中的操作符们
- Binary_tree插入
- POJ 2499 Binary Tree
- FZU problem 1896 单调队列
- Hadoop中Mapper类的setup()函数在什么地方调用
- ret hat linux 全屏
- 用OpenSceneGraph实现的NeHe OpenGL教程 - 第三十八课
- hibernate 双向n-n
- Java反射学习总结五(Annotation(注解)-基础篇)