2

xyz.cpp長い定数を含むcppファイルがあります。ここで、long 定数を long long に変更する必要があります。

ex   
long a=0x00000001

long long a=0x0000000000000001

将来の目的のために。(私はgccコンパイラを使用しています)しかし、そうすると、「整数値が大きすぎて長い値を保持できません」というエラーが発生しました。インターネットで閲覧したところ、使用などの提案がありましたが、

long long a=0x0000000000000001ULL .

それはうまくいきました。.cppしかし問題は、このファイルをに変換する必要がある jar ファイルを持っていることです.java.javaファイルからファイルを変換しようとすると、.cppULL が認識されません。

今私の質問は

1、このシーンでは、最後に ULL @ を追加する代わりに、私の gcc コンパイラが long long 値を受け入れるようにするか、その long long 値 (ULL) を受け入れるために .java ファイルで何をすべきかを提案します (私はJavaが長い長い値を保持できる長い値しか持っていないことを知っています)

前もって感謝します :)

4

3 に答える 3

1

C++ はソースを変更しないと Java としてコンパイルされないため 、ULL/LL サフィックスを取り除く (そして に変更する) ことができます。変換時に変更する項目のリストにこれを追加するだけです。問題はありませんか?long longlong

于 2011-04-15T11:16:02.283 に答える
0

So, what exactly are you trying to do, convert C++ code to Java?

Java does not have unsigned integer types, and the "long long" type from C++ also does not exist in Java. Java has the following integer types:

byte - 8-bit signed integer

short - 16-bit signed integer

int - 32-bit signed integer

long - 64-bit signed integer

(There is also char, which is technically a 16-bit unsigned integer, but which is meant to hold character data).

You could use BigInteger in Java if you need to work with numbers that do not fit in a long.

于 2011-04-15T11:14:56.103 に答える
0

longJava で 64 ビットを保持でき、必要な場合は署名付きの動作をします。ただし、これは符号なしの 64 ビット値の格納を止めるものではありません。特定の操作については回避策を記述する必要がありますが、 +、-、*、==、!= などはすべてまったく同じように機能します。

于 2011-04-15T12:42:26.687 に答える