java - Java左移运算符
问题描述
在 java 中,char a=5 并使用 leftshift 运算符作为 println(a<<18) /* 结果:262144 */ 并且它在 16 位之后仍然给出进一步的答案,但它不应该因为 java 中的 char 是 16 位。为什么?
解决方案
左移应用于int
或long
操作数。当你将它应用到 achar
和 anint
时, thechar
被提升为 an int
,结果是 an int
。因此 262144 是一个有效的结果。
移位运算符在语法上是左结合的(它们从左到右分组)。
一元数字提升(§5.6.1)对每个操作数分别执行。(二进制数字提升(第 5.6.2 节)不在操作数上执行。)
如果移位运算符的每个操作数的类型在一元数字提升后不是原始整数类型,则这是编译时错误。
移位表达式的类型是左侧操作数的提升类型。
推荐阅读
- azure - 需要有关 Azure 存储的信息 - 同步数据复制
- r - 在 r 中的 ggplot2 中添加第 4 个特征到平铺图
- xamarin - /Users/runner/work/1/s/***_xamarin.Android/obj/Release/lp/89/jl/res/values/values.xml(4): > error APT1000: Found tag id where item is expected
- svg - svg 视图中的 Adobe Illustator 错误,如何修复
- android - 如何使用 Paging 3 库将元数据与分页列表一起传递
- machine-learning - 在不同大小的组中聚类
- android - Android Studio Kotlin:RecyclerView 不能为 Null RuntimeException
- google-cloud-platform - 如何配置buf.yaml搜索外部依赖protos>
- c - 我干了几次,但找不到错误在哪里。我正在提供我的代码,任何人都可以找出错误吗?
- ios - 分段错误:11 xcode 12.4