みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

DWORDの実際の型は何でしょうか

VC++.NETの環境です。
DOWRD dw1 = 1;
int i = 2; と定義し
ここで
if ( i > dw1 ){
何かの処理;
}
とコーディングすると
warning C4018: '>' : signed と unsigned の数値を比較しようとしました。
のワーニングがでます。
これは、DWORDがint型でなくunsigned int型のようにも見えます。
ある本によれば(VC++.V.NET逆引き大全500の極意)
DWORD はint型であると記述されています。
もし、int型ならこのワーニングはでないはずなのですが、
なぜでるのでしょうか。又、DWORDの実際の型は何なのでしょうか。ご存じのかたおりましたら、教えていただけませんでしょうか。

投稿日時 - 2006-07-09 09:56:17

QNo.2264655

すぐに回答ほしいです

質問者が選んだベストアンサー

型定義が知りたいのならば、宣言ファイルを見れば疑問を挟む余地もありません。
DWORD型はwindef.hで
"typedef unsigned long DWORD;"
と宣言されています。

Visual Studioを使っているのならば、知りたい型の上にマウスポインタを置いて右クリック、ポップアップメニューの「定義へ移動」または「宣言へ移動」で簡単に知ることが出来ます。

投稿日時 - 2006-07-09 11:17:17

お礼

>DWORD型はwindef.hで
>"typedef unsigned long DWORD;"
>と宣言されています。

具合的な確認方法まで提示していただき、ありがとうございました。
実は、int型とDWORD型はその本によれば同じ型ということなので、使用する変数の型、関数の戻り値を
どちらにするかで悩んでいました。(UNIXからの移植もありint型にする方を優先していましたが)
これで、int型で統一し、DWORD型がunsigned intの用途の場合にのみ使用するようにする根拠がもてました。
ありがとうございました。

投稿日時 - 2006-07-09 11:38:34

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

DWORDはunsigned longだったと思います。
何にせよ32ビット符号なしなのは間違いないです。

投稿日時 - 2006-07-09 10:09:56

お礼

>何にせよ32ビット符号なしなのは間違いないです。
ありがとうございます。

投稿日時 - 2006-07-09 11:33:22