zoukankan      html  css  js  c++  java
  • C语言中的printf函数的输入输出问题

    这个问题是个很基础,但是我一直不知道的问题,是同学问了之后才知道的,长知识了。

    这里要注意的是,printf函数是从右向左计算,从左向右输出。

    距离如下:

    #include <stdio.h>
    main()
    {
        int i=8;
        printf%d, %d, %d, %d
    ",i,--i,i,i--);
     }

    此程序输出结果为:7, 7, 8, 8。原因是,printf()函数中,i++,i-- 时,i的值是在printf()函数之后才会被刷新,所以在printf()函数中,i++,i-- 对i的值暂时不产生影响,而++i、--i会有影响。

    实际这里是涉及到printf的运行规则问题,是先入栈再出栈,然后再输出。具体如下。

    对于printf函数中的参数,按照入栈顺序进入栈堆,然后先入栈者到栈底,后入栈者到栈顶,完成后,开始计算,由栈顶开始计算,先出栈者为printf函数中的右侧参数,计算完后接着出栈,然后计算下面的元素,这样,printf函数中的第一个元素就成为最后一个计算的元素,然后再按照由右向左的顺序将计算结果输出,所以上述例子的结果如是。

    以此记录,以供学习!

  • 相关阅读:
    浮动
    导航
    Json
    节点
    评论框
    WebClient 指定出口 IP
    IIS8 下 JS, CSS 等静态文件出现 500 错误
    使用 ffmpeg 转换 mov 视频
    使用 ildasm 和 ilasm 修改程序集的的引用信息
    2020-01-08 工作日记:无题
  • 原文地址:https://www.cnblogs.com/Pillar/p/4328984.html
Copyright © 2011-2022 走看看