1

这篇关于与 std::ofstream 的文件共享模式的 MSDN 文章中,微软写道:

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

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

4

1 回答 1

1

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

位掩码类型可以实现为整数类型或枚举。无论哪种情况,您都可以对相同位掩码类型的值执行按位运算(例如 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 文档已再次更改:最新页面甚至不再描述标志字段的语义(尽管,您可以提及_Mode | ios_base::out暗示参数是位掩码组合)

于 2011-11-27T18:26:20.197 回答