zoukankan      html  css  js  c++  java
  • C语言:C运算符优先级

    元素单目乘除余,

    加减移位大小等,

    位与异或逻与或,

    条件赋值组合逗。
     
    元素:   ()  []   ->   .
    单目:    !   ~   ++   --   (type)类型转换   *   &   sizeof
    乘除余:*   /   %
    加减:    +   -
    移位:    <<   >>
    大小:    <   <=    >   >=
    等:        ==   !=
    位与:    &
    位异或:^
    位非:    |
    逻与:    &&
    逻或:    ||
    条件:    ?:
    赋值:    =
    组合:    +=   /=   -=   *=
    逗:        ,
     
    ★单目运算符、赋值是“自右向左”,所以*p++会被解释成*(p++),而不是(*p)++。
    其他运算符结合性都是“自左向右”,所以a,b,c等价于 (a,b),c 而不是a,(b,c)。
    ★单目运算符低于元素运算符,所以定义一个函数指针p,要写成 (*p)(),如果写成*p(),会被解释成*((p))。
    ★类型转换也是单目运算符,优先级与其他单目一致,注意单目是“自右向左”结合的。
    ★与或异或并不同级:与>(异或)>或。
    ★赋值运算符不能保证任何求值顺序,所以 y[i]=x[i++] 是不可预测的,y[i]中的i可能是自增后的,也可能是自增前的。同理 y[i++]=x[i]也是不可预测的
  • 相关阅读:
    树的递归
    《计算机存储与外设》 3二级存储器
    《计算机存储与外设》 2主存储器
    《码农翻身:用故事给技术加点料》阅读有感
    分析"傍富婆发财"
    《第22条军规》Catch-22
    《编译原理》4
    《编译原理》3
    《血酬定律》
    linux下netcore程序部署
  • 原文地址:https://www.cnblogs.com/wuqi1003/p/12239625.html
Copyright © 2011-2022 走看看