Это сообщение об ошибке, которое я получаю, когда пытаюсь построить:
недопустимые операнды типов double snd 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;
// ^ ^
Назначение (=
) имеет более низкий приоритет, чем сдвиг (<<
), поэтому вам нужны скобки для получения значения, которое вы ожидаете:
cout << "(" << (x = y++) << ", " << y << ")" << endl;
^ ^
Но вы не должны писать код с несколькими побочными эффектами: порядок оценки операндов не указан, и подобное может легко привести к неопределенному поведению. Держите ваш код простым, делая одно за раз.
cout << "(" << (x = y++) << ", " << y << ")" << endl;