В C++ оператор равенства ассоциативен слева направо, как указано здесь и здесь, а возвращаемое значение операции присваивания — это присвоенное значение к заданной переменной. (Как показано здесь , здесь, здесь и здесь, (раздел 6.5.16, страницы 101-104 для последней ссылки).)
Согласно этой информации, это:
double d = 5;
if (d == (d = 6))
cout << "but d was 5...!!!" << endl;
else
cout << "5!=6 :)" << endl;
должен напечатать "5!=6 :)"
, так как выражение (d == (d = 6))
эквивалентно (5 == (6))
(что неверно), но вместо этого выводится "but d was 5..."
. Кто-нибудь может объяснить, почему?
==
) - person M.M   schedule 12.06.2017