Clojure中的负十六进制字面量

3
我发现在Clojure中,0xFFFFFFFFFFFFFFFF代表的是18446744073709551615N而不是-1。使用(unchecked-long 0xFFFFFFFFFFFFFFFF)可以实现,但会产生运行时成本。

还有其他方法吗?

2个回答

3

我建议只使用unchecked-long

运行时开销可能为零,因为JIT编译器应该足够聪明,可以将其优化为常量加载。


3
您可以在读取时计算值,以防止它成为运行时成本:
#=(unchecked-long 0xFFFFFFFFFFFFFFFF)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接