C-a=9,b=1,c=2, d=c--+(b++---b)*a+c 请问d=?

发布于 2016-12-14 18:27:04 字数 37 浏览 1313 评论 1

如题
我算出来的是 2+(1-1)*9+1 = 3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜柠檬 2017-05-10 17:49:04

结合性有点问题,d=(c--)+((b++)-(--b))a+c,括号该加还是要加的,代码里奇技淫巧意义不大,最终结果应该是4。
原理上你可以反汇编看一下,如果肉眼分析,两个基本原则:
1) 在计算中,对于一个作用域内的前缀操作数(++i,--i),替换为i的最终数值(算入所有的前置后置运算符后的数值),对于后缀操作符替换为原数值,对于没有前置或者后置运算符的替换为原数值。
2) 在printf,cout等依靠堆栈工作的方法中,对于一个作用域内的前缀操作符(++i),替换为i的最终数值,对于后缀操作符,按照入栈顺序分析。
d = (2) + ((1)-(1))
9 + 2 = 4;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文