【整理】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( ) 循环, 其他场景中较为少见。

 

 

 

              

             

       

      

                      

0 0
原创粉丝点击