c++ - 这两个 C++ 代码块有什么区别?

标签 c++ if-statement boolean

为什么第一个能够正确地递增 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/

相关文章:

c++ - 长文件 (15 MB) 上的 CStdioFile::GetPosition 有几个字节错误

c - 读取和显示数据文件,结果正确,但代码不可行

java - 在 Java 中切换 boolean 变量的最简洁方法?

c++ - 了解 Boost MultiArray 参数

c++ - 你如何让 std::shared_ptr 不调用 delete()

c++ - 如何在 Qt C++ 中使用 Secure WebSocket 连接服务器

javascript - 带有 if else 条件的 getElementById.innerHTML

java - 给定大小为 n 的数组中 r 个元素在条件下的所有可能组合

android - 我如何使用这个 boolean 值。 - 是空白

visual-studio-2010 - ReportViewer 如何以不同方式显示 boolean 值