zoukankan      html  css  js  c++  java
  • C++学习(五)(C语言部分)之 运算符

    运算符学习时的笔记(其实也没什么用,留着给自己看的)  

     

    运算符 用来对数据运算的符号

    优先级 3+4*5+6 先乘除 然后加减 运算符优先级高就先算

    40多个运算符 15层优先级 不需要背
    1.查表
    2.用括号改变优先级
    (3+4)*5+6

    运算规则
    1.算术运算符
    加减乘除 + - * / 求余符号%
    / 除法 3/4 整数相除的结果仍然是整数 除完去掉小数部分
    % 求余 只能整数之间 的求余 3%4 --->被除数-商*除数=余数
    2.二进制运算符 用于整型
    按位或 | 按位与& 取反~ 异或^
    左移<<和右移>>运算符
    (用8位二进制作为例子)
    13 0000 1101
    22 0001 0110

    按位或| 两个数字 13|22= 0001 1111 运算规则 有1则1,无1则0
    按位与& 两个数字 13&22= 0000 0100 有0则0
    异或^ 两个数字 13^22=0001 1011 相同为0不同为1

    取反~ ~22 1110 1001 二进制的所有位数 全部1变0 0变1(包括最高位)
    (PS负数补码 取反加一码 ~22+1--->-22补码)
    左移<< 22<<2 22左移两位 去掉22的二进制 前面2位 后面补两个0
    22<<2--->01 0110 00-->88
    一般 左移三位 相当于2^3 (成员8) 二进制 运算比乘法快
    右移>> -22>>3 去掉后面的三位 然后前面补齐(补齐符号位 正数补0 负数前面补1)
    1111 110 1 右移相当于除法 右移一位相当于除以2 (除法比较慢)

    3.关系运算符

    注意: 1.关系运算符的结果只能是0或1 2.关系运算符等于是两个= 不是一个


    判断数字大小 满足条件1 不然结果为0 (分支 循环 )
    大于> 小于< 大于等于>= 小于等于<= 不等于 != 等于==


    3>4 0
    5>4>3 0


    逻辑运算符 串联两个条件
    变量x 变量x大于3并且 x小于4
    逻辑与 && x>3&&x<4 两边的条件都成立 最后结果是1 不然结果为0
    逻辑或 || x大于3或者x小于4 x>3||x<4 两边条件有一个成立 结果是1 两边都不成立 结果为0
    ! 非 真变假 假变真 !1=0 !(3>4) ---->3<=4

    组成一些复杂的条件 有或与非三个运算符 示例:计算当x=8的时候 3<x<7的结果 规则 逻辑或 两边条件都为假 最后的结果为假,有一边为真 结果为真 (有真则真) 逻辑与 有假则假 逻辑非 真变假 假变真 P.S. 1.或与非的条件 可以是关系运算符的表达式 或者用数字也行(0为假 非0为真) 2.截断 ||有真则真 所以只要左边的条件为真 右边的可以不判断 && 有假则假 所以左边的条件为假 右边可以不判断

    可以用3>4 数字可以作为条件 (0为假 非0为真)
    3||4 ---> 1
    1>2&&3<4
    补充知识点 : 截断 逻辑与 左边条件为假 右边式子不再计算
    逻辑或 左边条件为真 右边式子不再计算

    4.赋值运算符
    = 赋值的意思 y=3 把3这个值赋给y 右值赋给左值 左值必须是变量
    a+=n --->a=a+n a/=b--->a=a/b

    5.三目运算符 ?:
    条件?语句1:语句2 条件为真 执行语句1 条件为假 执行语句2
    饿?吃饭:不吃饭

    x=5>2?3:4 5>2条件成立 把3的值赋值给x 不成立 把4的值赋值给x

    6.其他运算符
    [] 数组里面讲
    () 改变优先级
    . -> 结构体那章讲

    - 负号运算符 (单目) y=-x
    强转 小数转换为整数 (int)3.14 (类型)值
    *取值 解引用 指针讲到
    & 取变量地址

    sizeof(类型) 计算类型/变量大小 单位字节
    逗号 表达式1,表达式2,表达式3 最后的结果是最后一个表达式的值

    y=(1,2,3,4,5,6); y的结果是6

    ++ -- 自增 自减运算符

    自增 给变量加1
    自减 给变量减1

    相同点 单独使用效果一样 给变量加1
    不同点 前++快于后++
    前++ ++x y=++x; 先加1 然后赋值 直接加1 立刻生效
    后++ x++ y=x++ 先把x的值赋给y 然后x加1 延迟性buff
    ****************************************************************************************************************************************************************/

     

     

     

    运算符优先级

     

    或运算符的两边     0为假  非0为真    有真则真

     

     

    2018.05.14    11:26:13

  • 相关阅读:
    Qt全局坐标和相对坐标
    坐标系统
    qt坐标系统见解
    Qt中QGraphics类坐标映射关系详解
    对QT多线程以及事件投递的理解
    Qt中mouseMoveEvent无效
    递归、尾递归
    末日重生
    201314
    归并排序
  • 原文地址:https://www.cnblogs.com/Yuuki-/p/9035226.html
Copyright © 2011-2022 走看看