Условный оператор, используемый в операторе cout

Попробовав, я узнал, что необходимо заключать в скобки условный оператор в операторе cout. Вот небольшой пример:

#include <iostream>

int main() {
  int a = 5;
  float b = (a!=0) ? 42.0f : -42.0f;
  // works fine
  std::cout << b << std::endl;
  // works also fine
  std::cout << ( (a != 0) ? 42.0f : -42.0f ) << std::endl;
  // does not work fine
  std::cout << (a != 0) ? 42.0f : -42.0f;

  return 0;
}

Вывод:

42
42
1

Зачем нужны эти скобки? Результирующий тип условного оператора известен в обоих случаях, не так ли?

12
задан vstepaniuk 21 June 2018 в 07:38
поделиться