@LanskoyGames
У модераторов первое место, но только с конца...

Почему программа не выдаёт ошибку, если поместить выражение в скобки?

#include <iostream>

int main()
{
    double a = 10;
    int b = 10;
    std::cout<< a == b;

    return 0;
}

Не работает

#include <iostream>

int main()
{
    double a = 10;
    int b = 10;
    std::cout<< (a == b);

    return 0;
}

Работает
Почему?
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Приоритеты операций.

Без скобочек сначала выполняется <<. Фактически, у вас написано вот это: (std::cout<<a) == b;
<< - переопределенный оператор для std::cout, он выведет a на экран и вернет ссылку на std::cout, которую потом программа попытается сравнить с b и не сможет, потому что операция такого сравнения не определена.

Если же поставить скобки, то сначала выполнится ==, результат ее работы - bool - уже потом будет через оператор << выведен в на экран.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@pfemidi
Тут могло бы быть краткое описание меня
Потому что надо почитать про приоритеты операций и про ассоциативность.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы