This is one of the weirdest things I've encountered. My problem is this:
First of all, I'm using Visual Studio 2015 on Windows 7. In a C++\CLI project, I have code similar tho the following:
void Class::function(int flag) 
{
   if ((flag & CONST) != 0)
       printf("Passed.");
   else 
       printf("Failed.");
}
Where CONST is defined in another (Non-CLR) DLL to be 0x111. Looks pretty straight-forward. The problem I've had is that when I entered the procedure where flag is equal to 0x40. To me, it looks as if this procedure should print Failed., when in fact it it printed Passed.. The next thing I did, was to alter my code to the following:
void Class::function(int flag) 
{
   int local = CONST, localRes = flag & local, res;
   if ((res = (flag & CONST)) != 0)
       printf("Passed.");
   else 
       printf("Failed.");
}
Now, breaking the execution on printf, I got the following values in the Watch:
res = 0x110
local = 0x111
localRes = 0x0
I could not watch the value of CONST though VS didn't didn't know it in that context.  
As far as I'm concerned, I could get around this by using local, but I'd rather understand it. Could someone please tell me what's wrong with the compilation/execution?
Thanks!
EDIT: In the included header file (included as extern "C"), it is defined as so:
#define CONST /
   C1 | C2 | C3
Where quite regularly, C1 is 0x1, C2 is 0x10, and C3 is 0x100.
 
     
    