& является оператором bitwize (И), (помните логическую таблицу?)
0 & 0 = 0
1 & 0 = 0
0 & 1 = 0
1 & 1 = 1
так, что он делает здесь?
0xff является гекса 255 в двоичной системе (DWORD): 00000000 00000000 00000000 11111111
так, предполагая число х = any_value
представление х может быть как этот
???????? ???????? ???????? ????????
каждого? может быть либо 1, либо 0
поэтому применение bitwize оператора & (AND) с маской 0xff дает
???????? ???????? ???????? ????????
&
00000000 00000000 00000000 11111111
=
00000000 00000000 00000000 ????????
, например
00000000 00000000 00000011 00000011
&
00000000 00000000 00000000 11111111
=
00000000 00000000 00000000 00000011
^________________________^ ^______^
zeroed kept
проверить это http://edwinmeyer.com/Release_Integrated_RHG_09_10_2008/chapter02.html –
Короткий ответ: X длинный. Таким образом, SYMBOLP() является макросом, чтобы проверить, являются ли самые правые 8 бит длинного соответствия SYMBOL_FLAG. – slim