【面试题】s += 1 和 s = s + 1的区别

文章目录

1.问题

以下两个程序真的完全等同吗?

short s = 0;

s += 1;
short s = 0;

s = s + 1;

2.发现过程

初看s += 1 和 s = s + 1好像是等价的,没有什么区别。很长一段时间内我也是这么觉得,因为当时学习c语言的时候教科书上将s += 1转换成s = s + 1帮助我们去理解,所以我将这个迁移到了java语言当中。但是直到遇到了一个有意思的题目,于是亲自在idea中去测试了一下,结果发现s += 1 没有报错,而 s = s + 1报错了。

通过idea我们会发现,报错的原因是因为我们将short类型赋值给int类型,而没有进行强制类型转换。

3.解析


s += 1的底层会有一个强制类型转换,将右边的结果转换成s的类型。

作者:Listener-1379

出处:Listener-1379博客

github地址:https://github.com/beyong2019

本博客中未标明转载的文章归作者Beyong有,欢迎转载,但未经作者同意必须保留此段声明,且在文章明显位置给出原文连接,否则保留追究法律责任的权利。

相关推荐
程序员库里1 小时前
AI协同写作应用-TipTap基础功能
前端·javascript·面试
程序员阿峰1 小时前
【JavaScript面试题-算法与数据结构】手写一个 LRU(最近最少使用)缓存类,支持 `get` 和 `put` 操作,要求时间复杂度 O(1)
前端·javascript·面试
im_AMBER1 小时前
AJAX vs Fetch API:Promise 与异步 JavaScript 怎么用?
前端·javascript·面试
宝耶2 小时前
Java面试2:final、finally、finalize 的区别?
java·开发语言·面试
比昨天多敲两行3 小时前
C++ 继承
开发语言·c++·面试
韭菜盖饭3 小时前
大模型常见八股集合(带答案)
语言模型·自然语言处理·面试·transformer
includei3 小时前
【社招】面试_中科飞思_前端工程师
前端·面试·职场和发展
爱敲代码的菜菜4 小时前
【面试】软件测试
面试·职场和发展
工边页字4 小时前
AI公司面试100%加分的话题:如何做 API成本预算
前端·后端·面试
我叫黑大帅4 小时前
🎯 DOM 事件:onclick VS addEventListener('click')区别
前端·javascript·面试