c++中unsigned long long的问题

problem in unsigned long long in c++

本文关键字:long 问题 unsigned c++      更新时间:2023-10-16

我有一个cpp文件xyz.cpp,它包含长常量。现在我需要将long常量更改为long。

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只有可以保存长长值的长值)

提前感谢:)

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

那么,你到底想做什么,将c++代码转换为Java吗?

Java没有无符号整数类型,c++中的"long - long"类型在Java中也不存在。Java有以下整数类型:

byte - 8位有符号整数

short - 16位有符号整数

int - 32位有符号整数

long - 64位有符号整数

(还有char,技术上是一个16位无符号整数,但它意味着保存字符数据)。

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

long在Java中可以保存64位,在重要的地方具有签名行为。然而,这并不妨碍您在其中存储无符号64位值。您需要为某些操作编写绕道,但是+,-,*,==,!=等操作都完全相同。