Mryqu's Notes


  • 首页

  • 搜索
close

切记:Java中long字面量以L结尾

时间: 2013-10-26   |   分类: Java     |   阅读: 25 字 ~1分钟

最近碰到一个问题,输入是int,要求按无符号整数使用。为了实现要求,升级成long然后与上0xffffffff,结果不正常。问了几个基友,都有点茫然。 问题出在0xffffffff上了,现在就操练一下。

将0xffffffff赋给一个long变量,它的值是多少?

long n = 0xffffffff;
System.out.println(Long.toHexString(n));

结果是0xffffffffffffffff呦!

ffffffffffffffff

将0x000000008fffffff赋给一个long变量,它的值是多少?

long = 0x000000008fffffff;
System.out.println(Long.toHexString(n));

结果是0xffffffff8fffffff呦!!!

ffffffff8fffffff

int转换成long的规则是,一个负的int数,会自动扩展符号位,升级成负的long数的。 正确的用法是0xffffffffL,字面量表明是long类型,所以头32位才会全是0。

long = 0xffffffffL;
System.out.println(Long.toHexString(n));

输出结果:

ffffffff

标题:切记:Java中long字面量以L结尾
作者:mryqu
声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!

#negative# #int# #long# #cast# #literal#
nohup命令笔记
[C++] 重温函数隐藏和重写
  • 文章目录
  • 站点概览

Programmer & Architect

662 日志
27 分类
1472 标签
GitHub Twitter FB Page
© 2009 - 2023 Mryqu's Notes
Powered by - Hugo v0.120.4
Theme by - NexT
0%