gpt4 book ai didi

c++ - 是否可以判断哪个数组元素比较结果为真?

转载 作者:行者123 更新时间:2023-11-28 08:12:26 25 4
gpt4 key购买 nike

我有一个三维数组,用作位表

   char bit_table_[X][Y][Z];

X 不大于 20,但 Y 和 Z 会非常大。每个 X 的 Y 和 Z 的内容将按如下方式并行比较(这里 Y 和 Z 的实际值将使用一些哈希函数计算)。我的问题是;我不知道是否有任何方法可以判断在 if 语句的条件检查中哪个 X 为真

if (((bit_table_[0][i][bit_index / bits_per_char]|
bit_table_[1][i][bit_index / bits_per_char])& bit_mask[bit]) != bit_mask[bit])
return true;

或者有其他方法吗?

最佳答案

您必须单独测试它们才能知道哪个结果为真。下面是一个示例,使用逻辑或而不是按位或来确定哪个结果为真。

bool x1 = false, x2 = false;

if(
(x1 = (bit_table_[0][i][bit_index/bits_per_char] & bit_mask[bit]) != bit_mask[bit]) ||
(x2 = (bit_table_[1][i][bit_index/bits_per_char] & bit_mask[bit]) != bit_mask[bit])
)
{
//Check x1 and x2 here
return true;
}

编辑:

为了扩展前面的示例,并满足您原始帖子的结果,您还可以检查两者的组合是否是它通过的原因:

bool x1 = false, x2 = false, both = false;
size_t zindex = bit_index/bits_per_char;
if(
(x1 = (bit_table_[0][i][zindex] & bit_mask[bit]) != bit_mask[bit]) ||
(x2 = (bit_table_[1][i][zindex] & bit_mask[bit]) != bit_mask[bit]) ||
(both = ((bit_table_[0][i][zindex] | bit_table_[1][i][zindex]) &
bit_mask[bit]) != bit_mask[bit])
)
{
//Check x1 and x2 here
//If both is true then neither x1 or x2 resulted in true alone

return true;
}

关于c++ - 是否可以判断哪个数组元素比较结果为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8660089/

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