重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

long long型を使用したいのですが、
lomg long型は64ビット整数となるのでしょうか?
32ビットOSでも使用できるのでしょうか?

OS:Vine Linux3.1
コンパイラ:gcc-3.2.2

無知で申し訳ありませんが、
回答宜しく御願い致します。

A 回答 (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ビットになったような記憶があります。
今回は関係ないと思いますが、念のため。
    • good
    • 0

★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 型で処理させるように分岐するとか。
・いろいろと工夫してみて下さい。
    • good
    • 0

私だったら…



> long long型を使用したい

こう思った時点で、sizeof(long long) を出力するための
コードを書いて、結果がどうなるか「自分で」確認します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!