If a[2] prints out 3, how does this if statement if a[2] & y == 1 returns a true then? As you can clearly see y = 1 and a[2] = 3, they both do not equal to 1 and the if statement should return false, not true? if I type this instead a[0] & y == 1 that returns a false and it does not execute the print macro.