运算符和结合性

第一级:结合方向自左向右,
()
[] :只用于数组,作用:1.定义数组,先定义后使用;2.通过数组下标访问数组元素。int a=10;int arr[10];
自定义数据类型 ,通过结构体的变量访问内部成员;
    struct Student
{
      char name[10];
      int age;
};
        struct Student Stu1={"caocao",20};
      Stu1.age=23;
-> :结构体的指针变量,访问它的成员使用;
      int *p=&a;
      struct Student *ps=&Stu1;
      ps->age=32;
第二级:结合方向自右向左,单目运算符
!:逻辑非运算符
~:按位取反;二进制的每一位都取反
++:自增  
          int a=10;
          int b=++a;//前置++;先加后赋值;a=11,b=11;
          int b=a++;//后置++;先赋值后加;b=10,a=11;
--:自减
          int a=10;
          int b=--a;//前置--;先减后赋值;a=9,b=9;
          int b=a--;//后置--;先赋值后减;a=10,b=9;
(类型):(强制)类型转换运算符
          float a=10/4.; //2->2.0
                float b=10.0/4;//2.5
                float c=(float)10/4;//2.5     强制类型转换 10->10.0
                float d=float(10/4);//2.0     10/4是2,2->2.0
*:指针  
&:取地址
sizeof:长度运算符  占用的字节数
          sizeof(char)=1;
                  sizeof(short)=2;
                  sizeof(int)=4;
                  sizeof(long)=4;
                  sizeof(long long)=8;
                  sizeof( 1 )=4;//数字默认为整型
                  sizeof( 12.0 )=8;//小数默认位double型
第三级:自左向右 双目运算符
* :乘法运算符
/ :除法运算符  整除 是整数/整数,结果为整数 10/4=2;小数点后面的都去掉,成为去尾,正负数皆可
      还有一种说法叫“向0取整”,其实跟“去尾”原理是一样的。
%:求余运算符   求余就是求余数 只能用于整数
      5%3=2
    (-5)%3=-2
      (-5)%(-3)=-2
      5%(-3)=2
有个规律,余数的符号和被除数的符号一致,如果记不住这个规律,也可以直接算 
第四级:加(+)减(-)运算符
第五级:移位运算符,双目,自左向右,只用于整数,不能用于浮点数
<< :左移运算符
        按位左移:例如10<<1 意思就是10的二进制按位左移一位
        10->1       0000  1010 -> 0001 0100  向左移动了一位,左边的0没有了,右边补0;移位后变成20
        10->2       0000  1010-> 0010 1000  变成了40  扩大了4倍
        可以看出,按位左移了几位,数值就会变成2的几次方倍,所以说,扩大一个数的2 的几次方的倍数,最快的方法就是左移几位。
>> :右移运算符
        原理同上,缩小倍数的。
可以类比十进制的左右移

下面的6~12 都是双目运算符,自左向右结合
6.关系运算符:<(小于)     < =(小于等于)
  >(大于)     >= (大于等于)  
7.==(等于) !=(不等于)
8.按位与运算符:&  都为1,才为1;
9.按位异或运算符:^  不一样的才为1(相同为0,不同为1)
10.按位 或:|  有一个为1,就为1
11.逻辑与:&&  表达式1&&表达式2 都为真,才为真  特别注意!若表达式1为假,表达式2不会被计算
12.逻辑或: ||       表达式1 || 表达式2  有一个为真,就为真,特别注意!若表达式1为真,表达式2不会被计算

13.条件运算符   ? :  唯一的一个三目运算符,结合性自右向左
  表达式1 ?表达式2 :表达式3   它的意思就是表达式1如果为真,则执行表达式2,否则执行表达式3 
    可以替换简单的if-else语句。

14。赋值运算符:= ,+= ,-=,*=,/=  ,%= ,>>= ,<<= ,&=,^= ,!=
      自右向左 
15.逗号运算符:也叫顺序求值运算符,自左向右结合
表达式1,表达式2,……,表达式n ;   这个表达式的结果应该是表达式n
1,2,3,4,7=7;
逗号表达式:从左往右依次计算,以最后一个表达式(表达式n)的结果为最终结果。

大致归纳优先级的顺序:
初等运算符——单目运算符——算数运算符——关系运算符——逻辑运算符——条件运算符——赋值运算符——逗号运算符
记不住的话,可以加上括号(),它的优先级是最高的。
特别注意【】的优先级比 * 高。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值