x+=x-=x*x; 和 x-=x*x; x+=x;
2024-04-05 20:08:59
2019独角兽企业重金招聘Python工程师标准>>>
原问题:
第一种情况:
int x=6;
问执行下列语句后x的值
x+=x-=x*x;
这个答案是-24。
首先明确一点赋值操作从右向左进行,而且这是一次赋值。
(一次赋值就是这是一个式子,式子中间产生的值不会马上赋值回去,而是等整个式子运算结束)
x-=x*x => x=x-x*x
=6-6*6
=-30 (这是中间值不影响没参与运算的x)
x+=x => x=x+x (这俩x一个是原来的值,一个是中间值)
=6+(-30)
=-24
这是编译器的优化,只有完成一个式子的时候才往回赋值。
看第二种情况:
int x=6;
问执行下列语句后x的值
x-=x*x;
x+=x;
问这两步操作后的x。
这个答案是-60。
这是两步操作,所以产生的‘中间值‘’赋值回去了。这是非一次赋值
所以
第一步操作;
x-=x*x; => x=x-x*x
=6-6*6
=-30
第二部操作;
x+=x; => x=x+x (这俩x一样,是上一步的x改变后赋值回去的-30)
=-30+(-30)
=-60
转载于:https://my.oschina.net/zjllovecode/blog/1572468
最新文章
- Java虚拟机垃圾收集算法
- 淘宝自营“护肤品”精准引流加粉分享
- Linux平台安装MongoDB
- JavaScript实现图像处理----resizeImageWidth调整图像宽度算法(附完整源码)
- CodeCraft-21 and Codeforces Round #711 (Div. 2) D. Bananas in a Microwave 优化暴力
- listview刷新_Flutter NestedScrollView 滑动折叠头部下拉刷新效果
- javascript学习之使文本框中不能输入数字
- json标注工具与labelme安装
- web.config从.net framework3.5向4.0迁移注意事项
- django+echarts数据可视化(NBA球队数据可视化01)!
- TI 杯2019年全国大学生电子设计竞赛题
- c ringbuffer 源码_C语言 ringBuffer 实现
- 学习笔记之DNS配置(视图,日志,动态DNS)
- 1.认识华为数据通信
- OWASP的s-sdlc项目优秀分享
- 【科普园地】郭雷院士:系统的反馈原理及魅力
- 乐嘉留给15岁女孩的一封信
- 做微商,可不可以温柔一点
- tvb与亚视的十部巅峰代表作,论经典程度谁更胜一筹
- coreldraw x4如何重叠图片_CorelDRAW X4批处理功能介绍 如何链接图片而不是嵌入图片...