C++基础编程----4.2运算符

运算符

1.算术运算符

           1.1   bool  b=true;     bool  b2=-b;      //   对大多数运算符来说,布尔类型运算对象将提升到整型运算对象,-b=-1,-1为非0,所以转换为true初始化b2.
           1.2   溢出和其他算术运算异常
                             溢出就是该类型计算的结果超出该类型所能表达的范围所致
                              short   short_value=32767;    short_value+=1;     cout<<short_value;     //  计算导致溢出   值将会发生"环绕",-32768,根据编译器的不同,求值结果可能不同。
           1.3  取余运算符(%),两边对象必须为整数类型
           1.4  整数中,m=m/n*n+m%n;                     m%(-n)=m%n      (-m)%n=-(m%n);         符号和m的符号相同

2.逻辑和关系运算符

            2.1  逻辑和关系运算符返回值都为bool类型
            2.2   逻辑运算符   &&    ||   !
            2.3  相等测试
                           if(val==true){}            //   只有当val为1时,条件才为真        如果val不是bool类型,那先将true转换为val类型的1,进行和val比较
                           进行比较时,直接写if(val)或者if(!val)
            2,.4   i !=  j<k;       i!=0或者1   //   j<k的返回值要么是0要么是1;

3.赋值运算符

            3.1   赋值运算符右侧对象将会转换为左侧对象的类型     int  k=3.14;
            3.2   赋值运算符满足右结合律,赋值运算符返回左侧对象     ival=jval=0;  先计算jval   返回jval给ival进行赋值
            3.3  while ((i=get_Value())!=42){}    //   赋值运算符优先级低于关系运算符优先级

4.递增递减运算符

            4.1  ++i  作为左值返回和i++原始对象作为右值进行返回
            4.2  *pbeg++   //  输出当前值   并将pbeg向前移动一个元素      后置++优先级高于解引用*
            4.3  运算对象可按任意顺序求值
                            大多数运算符没有规定运算对象的求值顺序。如果一个子表达式改变了某个运算对象的值,另一个子表达式又要使用该值的话,运算对象的求值顺序就很关键了。*beg=toupper(*beg++);        //   该语句未定义              原因  如果先求左侧的值    *beg=toupper(*beg);         如果先求右侧的值    *(beg+1)= toupper(*beg);    //  产生歧义
             4.4   简单的if--else可以使用(?:)条件运算符来替代
                      finalgrade = (grade>90)?"highpass" : (grade>60)?"pass" : "fail";         //  嵌套为了可读性   最好小于或等于两层
              

 

你可能感兴趣的:(表达式)