Это сообщение об ошибке, которое я получаю при попытке собрать:
недопустимые операнды типа «двойной» и «const char [3]» в двоичный оператор<<‘
Очевидно, я действительно новичок в этом. Любая помощь будет оценена.
Код гласит:
#include <iostream>
using namespace std;int main ()
{
double x = 3;
double y = 4;
cout << "(" << x = y++ << ", " << y << ")" << endl;
cout << "(" << x = ++y << ", " << y << ")" << endl;
cout << "(" << x = y-- << ", " << y << ")" << endl;
cout << "(" << x = --y << ", " << y << ")" << endl;
return 0;
}
=
имеет более низкий приоритет, чем <<
измените его на:
std::cout << "(" << (x = y++) << ", " << y << ")" << std::endl;
// ^ ^
Увидеть Приоритет оператора C ++.
Назначение (=
) имеет более низкий старшинство чем сдвиг (<<
), поэтому вам нужны паратезы, чтобы получить значение, которое вы ожидаете:
cout << "(" << (x = y++) << ", " << y << ")" << endl;
^ ^
Но вы не должны писать код с несколькими побочными эффектами, такими как: порядок вычисления операндов не указан, и подобные вещи могут легко привести к неопределенному поведению. Сохраняйте свой код простым, выполняя одну вещь за раз.