C-a=9,b=1,c=2, d=c--+(b++---b)*a+c 请问d=?
如题
我算出来的是 2+(1-1)*9+1 = 3
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如题
我算出来的是 2+(1-1)*9+1 = 3
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
结合性有点问题,d=(c--)+((b++)-(--b))a+c,括号该加还是要加的,代码里奇技淫巧意义不大,最终结果应该是4。
原理上你可以反汇编看一下,如果肉眼分析,两个基本原则:
1) 在计算中,对于一个作用域内的前缀操作数(++i,--i),替换为i的最终数值(算入所有的前置后置运算符后的数值),对于后缀操作符替换为原数值,对于没有前置或者后置运算符的替换为原数值。
2) 在printf,cout等依靠堆栈工作的方法中,对于一个作用域内的前缀操作符(++i),替换为i的最终数值,对于后缀操作符,按照入栈顺序分析。
d = (2) + ((1)-(1))9 + 2 = 4;