2011-04-15 195 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位值存儲在其中。您需要爲某些操作編寫變通辦法,但+, - ,*,==,!=等工作完全相同。