在StarCitizen Bugsmashers about tick rates中,可以看到这样的代码段:
uint i = someBool ? someuint : uint(-1);
// ... some other code ...
if (i == uint(-1)) { /* do something */ }
如果someBool
为false,则i = 4294967295
为0xFFFFFFFF
/最大32位uint值:
#include <iostream>
int main()
{
const auto i = uint(-1);
if (i == uint(-1))
{
std::cout << i;
}
}
我认为,这样做的动机是避免为if语句使用另一个控制变量。构造uint(-1)
是否定义了行为?如果是,为什么?