按照JLS-$5.1.3缩小原语转换
有符号整数到T型整数的缩小转换只需丢弃除n个最低阶位以外的所有位,其中n是用于表示T型的位数。
因此,当我尝试将260(二进制表示为100000100
)缩窄到一个字节时,结果是4,因为最低的8位是00000100
,它是十进制的4或长值4294967296L(二进制表示为
现在,为什么我想知道将规则从double缩小到int、byte等的规则,是当我缩小double
值4294967296.0
时,结果是2147483647
;当我缩小长4294967296L
值时,结果是0
。
我已经理解了对int,byte等的长缩窄(除了n个最低阶位外,其他位都被丢弃),但我想知道在双缩窄的情况下会发生什么。
我已经理解了对int,byte等的长缩窄(除了n个最低阶位外,其他位都被丢弃),但我想知道在双缩窄的情况下会发生什么。
…我想理解为什么和如何的部分。
>
JLS(JLS 5.1.3)指定结果是什么。简化版本(int
)是:
问题内容: 所以我的问题是:为什么不执行编译错误? 问题答案: 四种情况中的三种正确报告了错误。复合分配是该规则的唯一例外。Java语言规范,第15.26.2部分,解释了以下原因: 15.26.2复合赋值运算符 形式的复合赋值表达式等效于,其中是的类型,不同之处在于该表达式仅被评估一次。 例如,以下代码是正确的: 并导致x的值为7,因为它等效于: 如您所见,通过隐式插入强制类型转换可以避免该错误。
考虑此代码段: 在我的机器上运行这个会打印两个转换的。但是和只能是吗? 据我所知,这是一个扩展的原语转换,规范中说: 拓宽的基元转换不会丢失有关数值的整体大小的信息。 以及 将int或long值加宽为float或将long值加宽为double可能会导致精度损失 据我所知,上述规范意味着将始终成为,但可以转换为其他内容(例如或类似内容)。我的规格解释正确吗?
问题内容: 好吧,如果我有这段代码 一切正常,但是 运行后给出以下错误(Eclipse没有给出任何错误) 虽然,当我这样做 要么 再没有错了。 为什么必须将其首先转换? 问题答案: 声明对象时,可以通过检查对象是否实际上已强制转换为实例来判断。由于取消装箱约定,可以再次将其强制转换为。之后,该值可以转换为。 但是,没有从Double实例转换为的取消装箱约定,因此,如果您尝试这样做,则运行时将发出。
问题内容: 如何将值转换为执行以下操作: 也就是说,答案总是四舍五入。 问题答案: 如果你明确地 投 来,小数部分将被截去。例如: 此外,如果需要返回值,也可以使用方法舍入值。
极氪:面试官做规划的都聊的规划,项目 为什么用frenet坐标系,lattice planner的cost有什么,单例模式,面向对象,怎么debug,用什么工具分析数据,一道dp 小米:面试官做控制的,项目,mpc怎么提高速度(面试官说了一个热启动,查了一下是用上一时刻的最优值当下一时刻的初始值加速收敛,apollo的lqr为什么需要前馈,pid的i为什么能减小稳态误差,定位信息不准控制算法能做什
描述 (Description) C库函数double ldexp(double x, int exponent)返回x乘以2表示幂的exponent 。 声明 (Declaration) 以下是ldexp()函数的声明。 double ldexp(double x, int exponent) 参数 (Parameters) x - 这是表示有效数的浮点值。 exponent - 这是expo