zoukankan      html  css  js  c++  java
  • 5-2-2 printf参数从右往左压栈

    5-2-2 C中printf计算参数时是从右到左压栈的

    #include <stdio.h>
    int main (int argc, char **argv)
    {
        int b = 3;
        int arr[] = {6,7,8,9,10};
        int *ptr = arr;
    //    *(ptr++) += 123;
    //    printf ("%d,%d
    ",*ptr,*(++ptr));
        printf ("%d,%d
    ",*ptr,*(ptr++));
        return 0;
    } /* ----- End of main() ----- */
    
    输出
    7,6
    关于
    *(ptr++)执行的先后顺序:我一开始认为:由于括号优先,因此先执行括号中的自加,再取值。

    可实际上是:先取ptr指向的数组元素的值,再自加。并且去掉括号即*ptr++,它的结果完全相同。

    #include <stdio.h>
    int main (int argc, char **argv)
    {
        int b = 3;
        int arr[] = {6,7,8,9,10};
        int *ptr = arr;
        *(ptr++) += 123;
        printf ("%d,%d
    ",*ptr,*(++ptr));
    //    printf ("%d,%d
    ",*ptr,*ptr++);
        return 0;
    } /* ----- End of main() ----- */
    
    输出
    8,8
    程序运行完后数组arr[]={129,7,8,9,10}。
  • 相关阅读:
    201403-1
    201312-5 I’m stuck!
    201312-4
    201312-3
    201312-2 ISBN号码
    深度学习-李宏毅PPT总结
    梯度下降
    离散时间信号与系统-频域:5
    离散时间信号与系统-时域:4
    离散时间信号与系统-时域:3
  • 原文地址:https://www.cnblogs.com/zhanbiqiang/p/3995377.html
Copyright © 2011-2022 走看看