Используйте логическое ИЛИ || объединить два целых числа? - PullRequest
1 голос
/ 27 ноября 2011

В этой статье MSDN о режиме совместного использования файлов с помощью std :: ofstream , Microsoft пишет:

Чтобы объединить режимы filebuf::sh_read и filebuf::sh_write, используйте логический оператор ИЛИ (||).

Насколько я понимаю, обе константы имеют тип int, поэтому я не понимаю, почему мы должны использовать логический ИЛИ вместо побитового ИЛИ (|). Я всегда думал, что логическое ИЛИ выдает логическое значение, поэтому нет способа интерпретировать результат?

1 Ответ

1 голос
/ 27 ноября 2011

Это ошибка документации.В более поздних версиях они реструктурировали документацию, делегировав объяснение типов битовой маски до на следующей странице :

Тип битовой маски может быть реализован как:целочисленный тип или перечисление.В любом случае вы можете выполнять побитовые операции (такие как AND и OR) со значениями того же типа битовой маски.Элементы A и B типа битовой маски являются ненулевыми значениями, так что A & B равно нулю.

Получить через

  1. google
  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, что означает, что параметры являются комбинациями битовых масок)

...