我正在用 C++ 编写一个程序,它必须尽可能地精简。我需要一些关于 if/else 语句的帮助。这是代码:
if (lines & 1 << ((d & 1) * 30 + 5 * l + c)) {
cout << "Invalid";
} else {
lines |= 1 << ((d & 1) * 30 + 5 * l + c);
}
我在这里做的是:验证某个位是否设置为 1 并且我计算出一些东西,如果不是,我将其设置为 1。有什么方法可以将我验证的 2 行组合起来以及我在 if 正文中将位设置为 1 的位置?
lines & 1 << ((d & 1) * 30 + 5 * l + c)
lines |= 1 << ((d & 1) * 30 + 5 * l + c)
我在想像这样的事情:
if (lines |= .... )
它应该做的是:验证位是否为 1 并进入 if 主体,如果不是(或已经)则将其设为 1。
抱歉我的英语不好和这个愚蠢的请求,但我想不出办法去做,这让我发疯。
P.S: 当我输入方程式时,是否有任何网站/计算器可以给我一个 bool 公式?例如:3 .. .. = -1。我在这里需要操作数和运算符。
最佳答案
if (lines == (lines|= mask)) cout << "Invalid";
关于c++ - 位技巧和魔术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43377037/