免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: GAZAG
打印 上一主题 下一主题

这句话是什么意思? [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
31 [报告]
发表于 2011-12-27 19:56 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
32 [报告]
发表于 2011-12-27 20:07 |只看该作者
本帖最后由 GAZAG 于 2011-12-27 20:09 编辑

31楼:
   30楼,已改了!

论坛徽章:
0
33 [报告]
发表于 2011-12-27 20:52 |只看该作者
本帖最后由 GAZAG 于 2011-12-27 21:03 编辑

int  i=1;
i=i++;
因为在第二条语句中,赋值和递增的运算可能会以任何次序进行,i的结果值无法估计。
==============
"赋值和递增的运算可能会以任何次序进行"。

这句话的意思是,根据操作符的优先级,先计算(1)i++  ,再计算(2)i=i。
------------------
计算(1)i++,这个子表达式有副作用。值A是i=i+1,副作用B是i=i。赋值i=i,递增i=i+1。它们可能以任何顺序进行。

书上所说的:赋值,递增。是指(1)i++  这个有副作用的子表达式。对不对?
------------------
计算(2)i=i,因为计算(1)时,A,B可能以任何次序计算,i的值不确定。所以,最后的结果i=i也不确定。
------------------
i=i++;
这句表达式语句,一共有两次赋值给变量 i !
第一次是计算(1),第二次是计算(2)。

论坛徽章:
0
34 [报告]
发表于 2011-12-27 21:42 |只看该作者
本帖最后由 GAZAG 于 2011-12-27 21:44 编辑

15楼:
    “i++有副作用,它的值是确定的,但是它的副作用何时生效却是不确定的。”
    这句话是什么意思?
    i++,这个表达式,值是:i+1。副作用是:i=i。
    副作用不是计算到这个表达式时发生的么?为什么楼主说“但是它的副作用何时生效却是不确定的”?

论坛徽章:
0
35 [报告]
发表于 2011-12-27 21:57 |只看该作者
回复 34# GAZAG


    int a = putchar('A') + putchar('B') ;

    屏幕输出是什么?有规定么?

论坛徽章:
0
36 [报告]
发表于 2011-12-27 22:12 |只看该作者
本帖最后由 GAZAG 于 2011-12-27 22:15 编辑

35楼:
   1.什么是副作用?
   2.副作用发生时间?
   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
37 [报告]
发表于 2011-12-28 01:28 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
38 [报告]
发表于 2011-12-28 10:08 |只看该作者
回复 36# GAZAG


    1. 除寄存器变化之外的一切变化都是副作用
    2. 大部分会产生副作用的语句都只保证副作用的发生,却没有保证何时发生,所以才规定i=i++是不合法的。
    别问我为什么不规定计算顺序。如果你的代码依赖长表达式内部的执行顺序,那不叫代码。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
39 [报告]
发表于 2011-12-28 10:37 |只看该作者
本帖最后由 MMMIX 于 2011-12-28 10:41 编辑
GAZAG 发表于 2011-12-27 22:12
35楼:
   1.什么是副作用?


http://en.wikipedia.org/wiki/Side_effect_(computer_science)

论坛徽章:
0
40 [报告]
发表于 2011-12-28 13:37 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP