zoukankan      html  css  js  c++  java
  • *p++、*++p、(*p)++、++(*p)的比较

    同一优先级的运算符在计算时执行的先后顺序根据结合性来决定。右结合性的运算符有三类,分别是:①单目运算符  ②三目运算符(只有一个条件运算符"?:")    ③双目运算符里的"赋值运算符(=、+=、-=、/=等)",除此之外的运算符基本都是双目运算符且为左结合性。

    指针运算符"*"与自增运算符"++"是同一优先级,根据结合性来决定执行的先后顺序。

    *p++: 按照结合性,先执行p++,p++的值就是p的值,也就是p指针指向的地址,再执行指针运算,结果为指针p指向的地址存放的值,再执行自增操作。

    *++p: 按照结合性,先执行++p,++p的值是p+1的值,是p的地址的下一地址,再执行指针运算,结果为为指针p存放的下一地址所指向的值,再执行自增操作。

    (*p)++: 括号运算符"()"的优先级最高,先执行括号运算符,*p的运算结果是p指向的地址存放的内容,读取出*p的内容后再进行++操作,(*p)++的值就是*p的值。

    ++(*p): 同上先执行括号运算符,读取*p的内容,然后对*p的内容加1,就是++(*p)的值。

  • 相关阅读:
    [2010山东ACM省赛] Balloons(搜索)
    [2010山东ACM省赛] Greatest Number(数的组合+二分搜索)
    [ACM] hdu 1213 How Many Tables(并查集)
    C Shuffle Cards
    快速读入输出模板
    J Distance to Work
    E Sort String
    H Diff-prime Pairs
    A PACM Team
    区间 (interval)
  • 原文地址:https://www.cnblogs.com/zytomcat/p/9313375.html
Copyright © 2011-2022 走看看