int a = 1, b = 2;
int c = a*b + b==0; // c = 0
cout << a*b + b==0; // outputs 4
c
вычисляется в 0
, потому что оператор старшинство *
и +
операторов выше, чем ==
в результате которого c
существу принимает значение (a*b+b)==0
который является ложным.C++ приоритет операторов в выходном потоке
Почему добавление такого же выражения в вывод cout
4?
Потому что << имеет свой приоритет, который * выше *, чем у ==. –
Любая хорошая книга или документ о C++ содержит список операторов с приоритетом ... –