【问题标题】:Use logical OR || to combine two integers?使用逻辑或 ||结合两个整数?
【发布时间】:2011-11-27 18:11:04
【问题描述】:

this MSDN article on file sharing mode with std::ofstream,微软写道:

要组合 filebuf::sh_readfilebuf::sh_write 模式,请使用逻辑 OR (||) 运算符。

据我所知,这两个常量都是int 类型,所以我不明白为什么我们应该使用逻辑 OR 而不是按位OR (|)。我一直以为逻辑OR会产生一个布尔值,所以没有办法解释结果?

【问题讨论】:

  • 在他们的文档中看到错误并非闻所未闻...
  • 除非有人想到一个复杂的设计,其中“1”(从 true 转换)是组合模式。
  • 这是一个相当广泛的错字...
  • 是的,这正是我要说的。这可能是错误(我认为是),但不是“错字”,运算符名称也不同 - 它不像“逻辑或(|)”或“按位或(||)”。有趣
  • 好的,伙计们:我应该将其发布为答案:“我怀疑这是一个 thinko”?

标签: c++ logical-operators ofstream bitwise-or


【解决方案1】:

这是一个文档错误。在以后的版本中,他们对文档进行了重组,将位掩码类型的解释委托给the following page

位掩码类型可以实现为整数类型或枚举。无论哪种情况,您都可以对相同位掩码类型的值执行按位运算(例如 AND 和 OR)。位掩码类型的元素 A 和 B 是非零值,因此 A 和 B 为零。

通过

  1. 谷歌
  2. http://msdn.microsoft.com/en-us/library/5785s5ts(v=vs.71).aspx
  3. http://msdn.microsoft.com/en-us/library/7z434859(v=vs.71).aspx
  4. http://msdn.microsoft.com/en-us/library/t60aakye(v=VS.71).aspx
  5. http://msdn.microsoft.com/en-us/library/y1et11xw(v=VS.71).aspx
  6. http://msdn.microsoft.com/en-us/library/5kb732k7(v=VS.71).aspx

耶!用于 MSDN 导航。此外,VS2010 文档已再次更改:the newest page 甚至不再描述标志字段的语义(尽管您可以提及_Mode | ios_base::out暗示参数是位掩码组合)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 2020-08-27
    相关资源
    最近更新 更多