目次 >> C、C++ >> Tips
64ビットOSとlongの関係は?
64ビットOSで64ビット用コンパイラでコンパイルした場合、longはOSに寄ってサイズが違ってくる。
具体的には
- Unix/Linux
- 64ビット幅
- Windows
- 32ビット幅
となる。
これは、OSに寄って変わってくるのであり、例えば同じインテルコンパイラを用いてコンパイルした場合でも、あてはまるので注意が必要である。
特に、Unix上でlongをintに代入する場合、Windows上でlong longをlongに代入する場合問題が発生する。
intは64ビットOSでも32ビット幅である。
また、long longは常に64ビット幅を持つ。
なので、longを使わずに、intおよびlong longのみで書くという方法もあるが、これは現状でだいたいうまくいくというだけであって、将来もこれが当てはまるかどうかはわからない(例えば、intが64ビット幅になるかもしれない)。
C99を使えば、ビット幅を指定した移植性の高い書き方ができる。
なお、32ビットOSではint、long共に32ビットである
最終更新日
本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6をopenSUSEはNovellのSUSE Linux OSSを表します。Fedora7以降は、単にFedora7、Fedora8、Fedora9、Fedora10、Fedora11、Fedora12、Fedora13、Fedora14、Fedora15と表示しています。Ubuntuは、必要に応じて20.04、21.04のようにバージョン番号をつけて区別しています。
ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2021 Chikuma Engineering Co., Ltd. All Rights Reserved.