gpt4 book ai didi

c++ - 这个c++语句检查什么? (Box2d)

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:55:50 25 4
gpt4 key购买 nike

if ((catA & maskB) != 0 && (catB & maskA) != 0)

它在 Box2d's manual: 6.2 中, 并用于检查两个对象是否应该碰撞(过滤后)

最佳答案

它检查 catA 是否与 maskB 有至少一个公共(public)“1”位,而 catB 是否与 maskA 有至少一个公共(public)“1”位。

例如,如果 catA 为 3(二进制 00000011)且 maskB 为 10101010),则 (catA & maskB) != 0 为真,因为 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++语句检查什么? (Box2d),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com