2

我有一个 cpp 文件说xyz.cpp,其中包含长常量。现在我需要将 long 常量更改为 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 @ 2,或者建议我应该在 .java 文件中做什么来接受那个 long long 值(ULL)(我知道java只有long值可以保存long long值)

提前致谢 :)

4

3 回答 3

1

由于 C++ 不会在不修改源代码的情况下编译为 java,因此您可以 去掉 ULL/LL 后缀(并更改long longlong)。您只需将其添加到转换时要更改的内容列表中 - 我看不到问题吗?

于 2011-04-15T11:16:02.283 回答
0

那么,您到底想做什么,将 C++ 代码转换为 Java?

Java 没有无符号整数类型,C++ 中的“long long”类型在 Java 中也不存在。Java 有以下整数类型:

byte- 8 位有符号整数

short- 16 位有符号整数

int- 32 位有符号整数

long- 64 位有符号整数

(还有char,从技术上讲,它是一个 16 位无符号整数,但用于保存字符数据)。

如果您BigInteger需要处理不适合long.

于 2011-04-15T11:14:56.103 回答
0

long可以在 Java 中保存 64 位,在重要的地方具有签名行为。但是,这不会阻止您在其中存储无符号 64 位值。您需要为某些操作编写变通方法,但是 +、-、*、==、!= 等都完全相同。

于 2011-04-15T12:42:26.687 回答