No.3ベストアンサー
- 回答日時:
★『64Bit』の整数について
・『Java』言語では 64 ビット整数を正式にサポートしていますが、C 言語では処理系依存になります。
・『VC6』にはあまり詳しくありませんが、『long long』はマイクロソフト社系では使えません。
その代わりに、妙な型が定義されていて『__int64』、『LONGLONG』、『LARGE_INTEGER』など3つほど
64ビット整数を扱うような型が存在します。
●LARGE_INTEGER 共用体
typedef union union {
struct {
DWORD LowPart; // 飼い32ビット整数(符号なし)
LONG HighPart; // 上位32ビット整数(符号付き)
};
LONGLONG QuadPart; // 64ビット整数(符号付き)
} LARGE_INTEGER, *PLARGE_INTEGER;
●関数
LONGLONG Int32x32To64( LONG a, LONG b ); // 掛け算(a×b=64ビットの符号付き整数を返す)
ULONGLONG UInt32x32To64( DWORD a, DWORD b ); // 掛け算(a×b=64ビットの符号なし整数を返す)
ULONGLONG Int64ShllMod32( ULONGLONG a, DWORD shift ); // 論理左シフト(a << shift の符号なし整数を返す)
ULONGLONG Int64ShrlMod32( ULONGLONG a, DWORD shift ); // 論理右シフト(a >> shift の符号なし整数を返す)
LONGLONG Int64ShraMod32( ULONGLONG a, DWORD shift ); // 算術右シフト(a >> shift の符号付き整数を返す)
最後に:
・詳しい関数の内容は、MSDN のマニュアルを見て下さい。
・また、上記で紹介した共用体と関数は『Microsoft Visual Studio .NET 2003 C/C++』です。
・最初に紹介した『__int64』は『_』『_』『int64』です。『_』が2つ先頭に付きます。
・以上。おわり。
No.5
- 回答日時:
すでに long longはVC6では使えないことは書かれていますが、
C99ではlong long はサポートすべき型の中にありますから、
C99をサポートしていると謳っている処理系ならば処理系依存ということはありません。
Visual Studio 2005のVC(VC8)ならばlong longが使えます。
C++ Reference Guide > A Tour of C99
http://www.informit.com/guides/content.asp?g=cpl …
x64で本格化する64ビットWindowsの時代(5):ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20051 …
STLでも問題続出ですし、VC6でなければならない理由がないのなら
早めに移行することをお勧めします。
No.4
- 回答日時:
long long型は、元々はGCCなどが共通の拡張としてサポートしていた型ですが、C99からは標準でサポートされるようになりました。
C++の場合は、現時点では非標準ですが、次期改定時には標準に取り込まれることでしょう。Visual C++に関してですが、long long型がサポートされるのはVisual C++.NET 2003からです。したがって、残念ながらVisual C++ 6.0ではサポートされていません。どうしても使いたいのであれば、__int64に置き換えるしかないわけですが、できれば__int64を直接使わず、typedefで何らかの別名を付けた方がよいでしょう。将来的な互換性を考えると、<stdint.h>または<cstdint>を自作して、std::tr1::int_least64_tを使うのも一つの手です。
No.1
- 回答日時:
long longは元々ANSI C標準じゃないから対応できないコンパイラもある。
(C99には入ったのかな?)VCだと__int64が使えるんじゃないかな。
# 詳細はヘルプで確認して
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- FX・外国為替取引 pine scriptのコードが動作しない 1 2023/02/01 19:03
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) ワークシート内を検索 1 2022/12/19 23:46
- Excel(エクセル) excel vba 参照渡しと値渡し 2 2022/04/27 10:45
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
変数の型を定義しなかった場合...
-
関数の実体定義にヘッダファイ...
-
typedef enumの使い方を教えて...
-
long型の定数の末尾にLを付ける...
-
C++のfor文について
-
main.c:7:43: warning: implici...
-
C++/CLIでネイティブの構造体を...
-
2重定義って??
-
ハンドルされていない例外が発...
-
構造体の要素すべてに対する四...
-
構造体の宣言でエラーが出ます。
-
コンパイルすると error C1083 ...
-
C++デバックエラーについて詳し...
-
VC6でlong longでエラー?
-
スレッドのスケジューリングポ...
-
HINSTANCEの型
-
STL vectorの初期化
-
C++ template operator T()
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
typedef enumの使い方を教えて...
-
C++のfor文について
-
long型の定数の末尾にLを付ける...
-
2重定義って??
-
関数の実体定義にヘッダファイ...
-
main.c:7:43: warning: implici...
-
変数の型を定義しなかった場合...
-
visualstudio C# テキストボッ...
-
ハンドルされていない例外が発...
-
C++でboolにintの値を代入する...
-
enumについて
-
構造体の宣言でエラーが出ます。
-
【#define】 defineで定義した...
-
C++ クラスをメンバにもつクラ...
-
0除算を判定したい
-
構造体の要素すべてに対する四...
-
値を返り値に返すのと参照渡し...
-
namespace定義の使い方
-
GCCで暗黙の型変換の警告を出し...
おすすめ情報