我有一个cpp文件说xyz.cpp
,其中包含长常量。现在我需要将长常数更改为long long。
ex
long a=0x00000001
到
long long a=0x0000000000000001
以备将来使用。 (我使用gcc编译器) 但是,当我这样做时,我得到“整数值是大到持有长值”的错误。 当通过互联网浏览时,我得到了一个像使用一样的建议,
long long a=0x0000000000000001ULL .
工作得很好。但问题是我是一个jar文件,需要将此.cpp
文件转换为.java
。当它尝试从.java
文件转换.cpp
文件时,它无法识别ULL。
现在我的问题是
1,对于这个场景来说,无论如何我的gcc编译器要接受long long值,而不是添加ULL @ end 2,或者建议我在.java文件中应该做什么来接受那个long long值(ULL)(我知道java只有长值可以保存很长的值)
提前感谢:)
答案 0 :(得分:1)
由于C ++不会在不修改源代码的情况下编译为java,因此可以删除ULL / LL后缀(并将long long
更改为long
)。您只需要将其添加到转换时要更改的内容列表中 - 我没有看到问题?
答案 1 :(得分:0)
那么,您究竟想要做什么,将C ++代码转换为Java?
Java没有无符号整数类型,Java中也不存在C ++中的“long long”类型。 Java具有以下整数类型:
byte
- 8位有符号整数
short
- 16位有符号整数
int
- 32位有符号整数
long
- 64位有符号整数
(还有char
,它在技术上是一个16位无符号整数,但它用于保存字符数据。)
如果您需要使用不适合BigInteger
的数字,可以在Java中使用long
。
答案 2 :(得分:0)
long
可以在Java中保存64位,并且在重要的地方使用签名行为。但是,这并不能阻止您在其中存储无符号的64位值。你需要为某些操作编写工作,但+, - ,*,==,!=等都完全一样。