• ベストアンサー

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の実際の型は何なのでしょうか。ご存じのかたおりましたら、教えていただけませんでしょうか。

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

  • ベストアンサー
  • ko_kinta
  • ベストアンサー率39% (43/109)
回答No.2

型定義が知りたいのならば、宣言ファイルを見れば疑問を挟む余地もありません。 DWORD型はwindef.hで "typedef unsigned long DWORD;" と宣言されています。 Visual Studioを使っているのならば、知りたい型の上にマウスポインタを置いて右クリック、ポップアップメニューの「定義へ移動」または「宣言へ移動」で簡単に知ることが出来ます。

tatsu99
質問者

お礼

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

その他の回答 (1)

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.1

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

tatsu99
質問者

お礼

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

関連するQ&A