我有一个名为xyz.cpp的cpp文件,它包含很长的常量。现在我需要将long常量改为long long。
ex
long a=0x00000001至
long long a=0x0000000000000001为了将来的目的。(我使用的是gcc编译器)但是当我这样做的时候,我得到了“整数值太大,无法容纳长整型值”的错误。当我浏览互联网时,我得到了一个建议,比如使用,
long long a=0x0000000000000001ULL .这样做效果很好。但问题是我有一个jar文件,需要将这个.cpp文件转换为.java。当它尝试从.cpp文件转换.java文件时,它无法识别ULL。
现在我的问题是
1,对于这个场景,这是不是让我的gcc编译器接受长整型值,而不是在end 2中添加ULL,或者建议我应该在.java文件中做些什么来接受长整型值(ULL) (我知道java只有长整型值可以容纳长整型值)
提前感谢:)
发布于 2011-04-15 19:16:02
由于C++在不修改源代码的情况下无法编译为java,因此您可以去掉ULL/LL后缀(并将long long更改为long)。您只需在转换时将此添加到要更改的列表中-我看不出有什么问题?
发布于 2011-04-15 19:14:56
那么,您到底想做什么,将C++代码转换成Java?
Java没有无符号整数类型,来自C++的"long long“类型在Java中也不存在。Java具有以下整数类型:
byte -8位有符号整数
short -16位有符号整数
int -32位有符号整数
long -64位有符号整数
(还有char,从技术上讲,它是一个16位无符号整数,但它用于保存字符数据)。
如果需要处理不适合long的数字,可以在Java语言中使用BigInteger。
发布于 2011-04-15 20:42:27
在Java语言中,long可以保持64位,并在重要的地方使用带符号的行为。然而,这并不能阻止您在其中存储无符号的64位值。您需要为某些操作编写变通方法,但+、-、*、==、!=等所有操作的工作方式完全相同。
https://stackoverflow.com/questions/5675784
复制相似问题