• 締切済み

64ビット整数について…

long long型を使用したいのですが、 lomg long型は64ビット整数となるのでしょうか? 32ビットOSでも使用できるのでしょうか? OS:Vine Linux3.1 コンパイラ:gcc-3.2.2 無知で申し訳ありませんが、 回答宜しく御願い致します。

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

> lomg long型は64ビット整数となるのでしょうか? long long型は少なくとも-9223372036854775807~+9223372036854775807の範囲を表現することができる符号付き整数型です。 実際の表現範囲は、<limits.h>の中のLLONG_MINおよびLLONG_MAXマクロを調べてください。 > 32ビットOSでも使用できるのでしょうか? 使用できるかどうかについては、OSが何であるかは直接関係ありません。 C99に対応したコンパイラであれば、例え8ビットのプラットフォームであっても使用できます。 > OS:Vine Linux3.1 > コンパイラ:gcc-3.2.2 この組合せで常にそうかどうかは分かりませんが、多くの場合、long long型は64ビットだと考えてよいでしょう。 なお、gcc-3.2.2でターゲットがh8300の場合、long long型は32ビットだったと思います。確か、gcc-3.4あたりから64ビットになったような記憶があります。 今回は関係ないと思いますが、念のため。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★gccには詳しくありませんが1つ。 ・gcc v3.2.2 なら long long 型は使えると思います。  今回の質問は >32ビットOSでも使用できるのでしょうか?  ですよね。  これは CPU によって使えるかどうか?  ということでしょ。 ・私の推測ですが long long 型がもし利用できる処理系ならば、  CPU で 64 ビット整数が利用できなくても利用できるように  エミュレーションしてくれるように切り替わるのでは。  と思っています。実際に確認していないため CPU を調べて  実際にテストしてみないと分かりません。  テストする時も単純に long long 型が使えるだけではなく  処理速度にも差が出てくると思います。 ・例えば VC++2003 以降では long long 型が利用できますが、  VC++ 6.0 では使えません。でも windows 用の型で ULONGLONG や  DWORDLONG 型があって擬似的に 64 ビット整数を使えるようにしています。  でも擬似的ですので処理速度に明らかに違いがあります。つまり遅い。 ・よって32ビットOS(CPU)で64ビット整数が使えない場合は gcc がどう  処理するか調べてみて下さい。確認できない場合は最初から 64 ビット整数を  扱う仕組みをプログラマ側が用意しておきます。また、CPU の命令を調べ  64 ビット整数が扱える場合は long long 型で処理させるように分岐するとか。 ・いろいろと工夫してみて下さい。

  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.1

私だったら… > long long型を使用したい こう思った時点で、sizeof(long long) を出力するための コードを書いて、結果がどうなるか「自分で」確認します。

関連するQ&A