何十年もBOOL/boolean/BOOLEAN型は真偽値しかとらないと思い込んでいた話

どうしてもプログラムが思うように動かなくて BOOL でキャストした値を何気なく見ていたところ

4272824

とか言う訳の分からない値が表示されたので定義を確認してみたのがきっかけでした・ω・

typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef float FLOAT;
typedef FLOAT *PFLOAT;
typedef BOOL near *PBOOL;
typedef BOOL far *LPBOOL;
typedef BYTE near *PBYTE;
typedef BYTE far *LPBYTE;
typedef int near *PINT;
typedef int far *LPINT;
typedef BYTE BOOLEAN;
typedef BOOLEAN *PBOOLEAN;
typedef unsigned char boolean;

いや、お前らintやBYTEであって boolじゃないやん…。
真偽判定する場合は、boolean(BYTE)もBOOL(int)も BOOLEAN(BYTE)も使ってはいけない
思い込みはダメですね((((・ω・))))

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です