3 ms·
TRUE is going to be 1. The flag value might have the value 0x2, 0x4, 0xsomething_else, etc., which will not equal exactly 1 (TRUE). What you want varies but is
by mpyne 14y ago
TRUE is going to be 1. The flag value might have the value 0x2, 0x4, 0xsomething_else, etc., which will not equal exactly 1 (TRUE).
What you want varies but is probably something like:
if (flag & FLAG_VALUE) ...
if (flag) ....
if ((flag & FLAG_VALUE) == TRUE) ...
that kind of thing.
- geon 14y agoif ((flag & FLAG_VALUE) == TRUE) ... That would still check if flag is 1, right?
- to3m 14y agoflag&FLAG_VALUE will be FLAG_VALUE or 0, so unless FLAG_VALUE==TRUE the answer could be wrong. Suggest (flag&FLAG_VALUE), or, if you need the expression to be of type bool, ((flag&FLAG_VALUE)!=0) or (!!(flag&FLAG_VALUE)).
- mpyne 14y agoVery true, I just checked to see if I can edit but I can't, so mea culpa.
- ja27 14y agoBoolean true / TRUE wasn't defined in any standard way before C99. Back in the "olden days", most programmers #defined it as 1, but not always. I ran into one of those "not always" cases in some inherited code.