2011-04-15 187 views
2

我有一个cpp文件说xyz.cpp,其中包含长常量。现在我需要将长常量改变很长时间。问题在无符号long long在C++

ex 
long a=0x00000001 

long long a=0x0000000000000001 

为未来的目的。 (我使用gcc编译器) 但是,当我这样做,我得到“整数值是为了保持长期价值”错误。 浏览时,通过互联网,我得到了像使用一个建议,

long long a=0x0000000000000001ULL . 

是工作的罚款。但问题是我是一个jar文件,需要将此.cpp文件转换为.java。当它试图从.cpp文件转换.java文件时,它不识别ULL。

现在我的问题是

1,这之情况,这是反正我的gcc编译器,使接受的,而不是添加ULL @结束 2长长的值,或暗示我什么,我应该做的.java文件接受,很长很长的值(ULL)(我知道Java的只有长期价值,可容纳长长值)提前

谢谢:)

回答

0

那么,究竟是你想怎么办,将C++代码转换为Java?

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

byte - 8位带符号整数

short - 16位带符号整数

int - 32位带符号整数

long - 64位带符号整数

(也有char,它在技术上是一个16位无符号整数,但它是为了保存字符d ATA)。

如果您需要使用不适合long的数字,则可以在Java中使用BigInteger

+0

嗨,谢谢你的答案。但有.jar文件,它将.cpp转换为.java用于某种目的。我写了很长的值,并在最后添加了ULL,是的,没有错误。但为了我的项目运行。jar文件尝试将.cpp转换为.java。现在,因为java不能识别ULL,所以我正面临着这个错误。我需要这两个文件与分配给它们的漫长的值完美协作。但我该如何实现呢? – 2011-04-15 11:25:33

+0

将您的C++代码转换为Java的程序是什么?在该程序中需要更改某些内容(请问编写它的人员)来支持此操作。 – Jesper 2011-04-15 11:28:39

1

由于C++不会无需修改源代码编译为Java,则可能只是剥离ULL/LL后缀(和改变long longlong)。您只需将其添加到转换时要更改的内容列表中 - 我没有看到问题?

+0

@Logeshwari Ram:通过修改可以正确处理LL和ULL的代码。 – Erik 2011-04-15 11:26:06

+0

嗨,谢谢你的答案。但有.jar文件,它将.cpp转换为.java用于某种目的。我写了很长的值,并在最后添加了ULL,是的,没有错误。但是为了让我的项目运行,.jar文件尝试将.cpp转换为.java。现在,因为java不能识别ULL,所以我正面临着这个错误。我需要这两个文件与分配给它们的漫长的值完美协作。但我该如何实现呢? – 2011-04-15 11:26:49

+0

ya .. wen LL或ULL被添加,代码工作,但是当转换.cpp到.java时,它会失败..是否有任何可能的方式让代码在不使用LL或ULL的情况下运行>?或无论如何为Java文件接受该值? – 2011-04-15 11:28:13

0

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