Hilfe doesnt seem to like variables as an operand to &, if it comes first.
> int a = 3;
> int b = 23;
> a & b;
Compiler Error: 1: Undefined identifier a.
Compiler Error: 1: Undefined identifier b.
Compiler Error: 1: Too few arguments to `& (got 0).
Compiler Error: 1: Expected: array | mapping | multiset | object |
program | string | type(mixed) | int | mixed.
Compiler Error: 1: Function type:
Compiler Error: 1: Got : scope(0,function((0=mixed) : 0) |
function((0=program | type(mixed)) : 0) | function((0=string) : 0) |
function((0=multiset) : 0) | function((0=mapping) : 0) |
function((0=array) : 0) | function((0=int) : 0) | function(mixed,
object, mixed ... : mixed) | function(object, mixed, mixed ... : mixed)
| !function(!mapping ... : mixed) & function(array | multiset |
(4=mapping) ... : 4) | !function(!(program | type(mixed)) ... : mixed) &
function((1=program | type(mixed)), (2=program | type(mixed)) ... : 1 |
2) | !function(!string ... : mixed) & function((1=string), (2=string)
... : 1 | 2) | !function(!multiset ... : mixed) & function((1=multiset),
(2=multiset) ... : 1 | 2) | !function(!mapping ... : mixed) &
function((1=mapping), (2=mapping) ... : 1 | 2) | !function(!array ... :
mixed) & function((1=array), (2=array) ... : 1 | 2) | !function(!int ...
: mixed) & function((1=int), (2=int) ... : 1 | 2)).
whereas it works if the first operand is not a variable.
> int a = 195;
> 0x80 & a;
(1) Result: 128
I tried some other operators and & seems to be the only one thats broken...