在这篇关于与 std::ofstream 的文件共享模式的 MSDN 文章中,微软写道:
要组合
filebuf::sh_read
andfilebuf::sh_write
模式,请使用逻辑 OR (||
) 运算符。
据我所知,这两个常量都是 type int
,所以我不明白为什么我们应该使用逻辑OR 而不是按位 OR ( |
)。我一直认为逻辑或会产生一个布尔值,所以没有办法解释结果吗?
在这篇关于与 std::ofstream 的文件共享模式的 MSDN 文章中,微软写道:
要组合
filebuf::sh_read
andfilebuf::sh_write
模式,请使用逻辑 OR (||
) 运算符。
据我所知,这两个常量都是 type int
,所以我不明白为什么我们应该使用逻辑OR 而不是按位 OR ( |
)。我一直认为逻辑或会产生一个布尔值,所以没有办法解释结果吗?
这是一个文档错误。在以后的版本中,他们对文档进行了重组,将位掩码类型的解释委托给了以下页面:
位掩码类型可以实现为整数类型或枚举。无论哪种情况,您都可以对相同位掩码类型的值执行按位运算(例如 AND 和 OR)。位掩码类型的元素 A 和 B 是非零值,因此 A 和 B 为零。
通过那里到达
耶!用于 MSDN 导航。此外,VS2010 文档已再次更改:最新页面甚至不再描述标志字段的语义(尽管,您可以提及_Mode | ios_base::out
暗示参数是位掩码组合)