为什么第一个能够正确地递增 pbf_[k] 而第二个甚至一次都没有做到(递增)?
unsigned pbf_[5] ={0};
bool m=0;
代码 1:
for(int k=0;k<5;k++)
{
if((m=(bit_table_[k][i][bit_index ] &bit_mask[bit]))==true)
pbf_[k]++;
}
代码 2:
for(int k=0;k<5;k++)
{
if((bit_table_[k][i][bit_index ] & bit_mask[bit])==true)
pbf_[k]++;
}
最佳答案
在第一种情况下,屏蔽的结果在与 true 比较之前被转换为 bool m
。
在第二种情况下,我相信位掩码是某种整数类型。在这种情况下,true
将被提升为相同的整数类型(并具有值 1)。
只需从比较中删除 == true
即可使它们等效。
关于c++ - 这两个 C++ 代码块有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8678232/