Попробовав, я узнал, что необходимо заключать в скобки условный оператор в операторе 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
Зачем нужны эти скобки? Результирующий тип условного оператора известен в обоих случаях, не так ли?