プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (2件)

型定義が知りたいのならば、宣言ファイルを見れば疑問を挟む余地もありません。


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

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

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

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

お礼日時:2006/07/09 11:38

DWORDはunsigned longだったと思います。


何にせよ32ビット符号なしなのは間違いないです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/09 11:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A