- ベストアンサー
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の実際の型は何なのでしょうか。ご存じのかたおりましたら、教えていただけませんでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
型定義が知りたいのならば、宣言ファイルを見れば疑問を挟む余地もありません。 DWORD型はwindef.hで "typedef unsigned long DWORD;" と宣言されています。 Visual Studioを使っているのならば、知りたい型の上にマウスポインタを置いて右クリック、ポップアップメニューの「定義へ移動」または「宣言へ移動」で簡単に知ることが出来ます。
その他の回答 (1)
- rinkun
- ベストアンサー率44% (706/1571)
回答No.1
DWORDはunsigned longだったと思います。 何にせよ32ビット符号なしなのは間違いないです。
質問者
お礼
>何にせよ32ビット符号なしなのは間違いないです。 ありがとうございます。
お礼
>DWORD型はwindef.hで >"typedef unsigned long DWORD;" >と宣言されています。 具合的な確認方法まで提示していただき、ありがとうございました。 実は、int型とDWORD型はその本によれば同じ型ということなので、使用する変数の型、関数の戻り値を どちらにするかで悩んでいました。(UNIXからの移植もありint型にする方を優先していましたが) これで、int型で統一し、DWORD型がunsigned intの用途の場合にのみ使用するようにする根拠がもてました。 ありがとうございました。