这段代码难道不该打印出56吗


Posted in 面试题 onFebruary 27, 2013
使用我的编译器,下面的代码int i=7; printf(“%d\n”, i++ *i++); 返回49?不管按什么顺序计算, 难道不该打印出56吗?
尽管后缀自加和后缀自减操作符++ 和– 在输出其旧值之后才会执行运算,但这里的“之后”常常被误解。没有任何保证确保自增或自减会在输出变量原值之后和对表达式的其它部分进行计算之前立即进行。也不能保证变量的更新会在表达式“完成” (按照ANSI C 的术语, 在下一个“序列点” 之前, 参见问题3.7) 之前的某个时刻进行。本例中, 编译器选择使用变量的旧值相乘以后再对二者进行自增运算。
包含多个不确定的副作用的代码的行为总是被认为未定义。(简单而言, “多个不确定副作用” 是指在同一个表达式中使用导致同一对象修改两次或修改以后又被引用的自增, 自减和赋值操作符的任何组合。这是一个粗略的定义; 甚至都不要试图探究这些东西在你的编译器中是如何实现的(这与许多C 教科书上的弱智练习正好相反); 正如K&R 明智地指出, “如果你不知道它们在不同的机器上如何实现, 这样的无知可能恰恰会有助于保护你。”

Tags in this post...

面试题 相关文章推荐
请用用Java代码写一个堆栈
Jan 26 面试题
Java里面StringBuilder和StringBuffer有什么区别
Jun 06 面试题
C++面试题目
Jun 25 面试题
雅虎笔试题(字符串操作)
Mar 24 面试题
SQL面试题
Dec 09 面试题
什么是数据库锁?Oracle中都有哪些类型的锁?
Aug 21 面试题
.NET面试题:什么是反射
Sep 30 面试题
远东集团网络工程师面试题
Oct 20 面试题
Linux的文件类型
Jul 05 面试题
如何清空Session
Feb 23 面试题
如何写出好的Java代码
Apr 25 面试题
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
May 30 面试题
枚举和一组预处理的#define有什么不同
Sep 21 #面试题
extern在函数声明中是什么意思
Jan 19 #面试题
strstr()的简单实现
Sep 26 #面试题
程序运行正确, 但退出时却"core dump"了,怎么回事
Feb 19 #面试题
怎样从/向数据文件读/写结构
Nov 23 #面试题
如何向接受结构参数的函数传入常数值
Feb 17 #面试题
华为c/c++笔试题
Jan 25 #面试题
You might like
php框架Phpbean说明
2008/01/10 PHP
深入解析PHP中逗号与点号的区别
2013/08/05 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
2019/09/03 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
python批量提交沙箱问题实例
2014/10/08 Python
python执行等待程序直到第二天零点的方法
2015/04/23 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
python assert的用处示例详解
2019/04/01 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
Python实现粒子群算法的示例
2021/02/14 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
仓库门卫岗位职责
2013/12/22 职场文书
毕业生欢送会主持词
2014/03/31 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
房屋买卖协议样本
2014/11/16 职场文书
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers