if ((catA & maskB) != 0 && (catB & maskA) != 0)
位于 Box2d's manual: 6.2 ,用于检查两个对象是否应该碰撞(过滤后)
最佳答案
它检查catA与maskB至少有一个共同的“1”位,并且catB与maskA至少有一个共同的“1”位。
例如,如果 catA 为 3(二进制 00000011)且 maskB 为 10101010),则 (catA & maskB) != 0 为 true,因为 catA & maskB 为 00000010。
这称为屏蔽,这意味着仅保留感兴趣的位。
您经常有这种构造:
#define READ 1
#define WRITE 2
#define READWRITE (READ|WRITE)
#define DIRECTORY 4
int i=getFileInfo("myfile");
if(i & READWRITE)puts("you can read or write in myfile");
if(i & DIRECTORY)puts("myfile is a directory");
顺便说一句,“i & DIRECTORY”与“(i & DIRECTORY) != 0”的含义相同
关于c++ - 这个c++语句检查什么? (方框2d),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046920/