何十年も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)も使ってはいけない
思い込みはダメですね((((・ω・))))
Comments