博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一道很有趣的关于printf的笔试题
阅读量:4129 次
发布时间:2019-05-25

本文共 255 字,大约阅读时间需要 1 分钟。

  1. #include <stdio.h>  
  2.   
  3. void main()  
  4. {  
  5.     int i = 5;  
  6.     printf("%d %d %d %d %d %d\n", i, --i, i--,i, i--,i);  

先不公布输出结果,看看上述的源码,输出会是什么?
输出结果是:2 2 4 2 5 2
是不是很出乎意料;
因为
1、printf函数的参数压栈顺序是从右往左依次入栈的;
2、对于i--,先由ebp寻址函数栈空间来记录中间结果,然后再给printf压栈
     对于--i,则直接压寄存器变量,寄存器经过了所有的自增操作。

转载地址:http://fewvi.baihongyu.com/

你可能感兴趣的文章
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
异常 Java学习Day_15
查看>>
Mysql初始化的命令
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
JAVA数据类型
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.2、访问限制
查看>>
【Python】学习笔记——-7.3、继承和多态
查看>>