免费注册 查看新帖 |

Chinaunix

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

此题何解?求高人指点 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2011-03-21 12:59 |只看该作者
回复 19# pmerofc


    有待考证

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
22 [报告]
发表于 2011-03-21 13:06 |只看该作者
没有结果的....
如果有结果,结果只有一个,这样的代码没有任何意义,都有副作用了,而且还把他当数学公式了??

C里面没有对求值顺序做假设,换句话说,你爱怎么求值怎么求值,都是满足标准的.

论坛徽章:
0
23 [报告]
发表于 2011-03-21 13:17 |只看该作者
没有结果的....
如果有结果,结果只有一个,这样的代码没有任何意义,都有副作用了,而且还把他当数学公式了?? ...
egmkang 发表于 2011-03-21 13:06


通过编译,运行的结果

i=4 j=6

    我想知道的是这个6是如何算出来的,如果您知道的话,请不吝赐教!

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
24 [报告]
发表于 2011-03-21 13:26 |只看该作者
通过编译,运行的结果

i=4 j=6

    我想知道的是这个6是如何算出来的,如果您知道的话,请不吝赐 ...
dingning239 发表于 2011-03-21 13:17


数学里面的求值,没有顺序之说,因为他是没有副作用的,输入A,输出必然是B.
但是在程序语言中(C/C++之类),很多代码都是有副作用的,比如你这个++,--.
然后你要是拿着数学公式里面的思想去理解程序语言,必然会产生一些错觉.

expression=expressionA + expressionB
在C语言里面依赖expressionA和expressionB的求值顺序,换句话说,expression=expressionB +expressionA 和上面那个表达式不是等价的.
如果这里面每个expression都没有副作用,那么expression的值就是一定的;如果有副作用,值未知.

而你的++,--,都是有副作用的表达式,expression的结果必然依赖求值顺序~!@#$%^&*()_+

上帝知道答案是多少!

论坛徽章:
0
25 [报告]
发表于 2011-03-21 13:32 |只看该作者
数学里面的求值,没有顺序之说,因为他是没有副作用的,输入A,输出必然是B.
但是在程序语言中(C/C++之类) ...
egmkang 发表于 2011-03-21 13:26



    副作用,您给讲讲我这个表达式中的副作用是啥?

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
26 [报告]
发表于 2011-03-21 13:34 |只看该作者
你如果真的想知道答案,可以尝试着这么做.
j = (++i)+(--i)-(--i);
你换成
tempA = ++i;
tempB = --i;
tempC = --i;

j = tempA + tempB - tempC;

然后三个第四个表达式没副作用,前面三个都有,3的全排列是6,你试着交换A,B,C的顺序,看看6种排列结果,J的值一共有多少个.
编译器的答案一般都在这些值中

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
27 [报告]
发表于 2011-03-21 13:36 |只看该作者
副作用,您给讲讲我这个表达式中的副作用是啥?
dingning239 发表于 2011-03-21 13:32


副作用很好理解的
exp = expA
多次执行,exp的值是不变的,那么我们就说这个exp = expA没副作用的;
如果不是,那么就说这个表达式有副作用

论坛徽章:
0
28 [报告]
发表于 2011-03-21 13:46 |只看该作者
副作用很好理解的
exp = expA
多次执行,exp的值是不变的,那么我们就说这个exp = expA没副作用的;
如 ...
egmkang 发表于 2011-03-21 13:36



   
您说的是如果值不是确定的话就是存在副作用,如果确定的则不是,但是此表达式每次计算出来的结果无一例外都是 6 ,这又如何解释不确定性呢?

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
29 [报告]
发表于 2011-03-21 13:52 |只看该作者
您说的是如果值不是确定的话就是存在副作用,如果确定的则不是,但是此表达式每次计算出来的结 ...
dingning239 发表于 2011-03-21 13:46


我勒个去...
我跟你没办法沟通....

论坛徽章:
0
30 [报告]
发表于 2011-03-21 13:56 |只看该作者
我勒个去...
我跟你没办法沟通....
egmkang 发表于 2011-03-21 13:52



    无语,看来这个问题还得高人解答了,期待中。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP