недопустимые операнды типов «double» и «const char [3]» для двоичного «оператора & lt; & lt;»

Это сообщение об ошибке, которое я получаю при попытке собрать:

недопустимые операнды типа «двойной» и «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;
}

0

Решение

= имеет более низкий приоритет, чем <<измените его на:

std::cout << "(" << (x = y++) << ", " << y << ")" << std::endl;
//                  ^       ^

Увидеть Приоритет оператора C ++.

1

Другие решения

Назначение (=) имеет более низкий старшинство чем сдвиг (<<), поэтому вам нужны паратезы, чтобы получить значение, которое вы ожидаете:

cout << "(" << (x = y++) << ", " << y << ")" << endl;
^       ^

Но вы не должны писать код с несколькими побочными эффектами, такими как: порядок вычисления операндов не указан, и подобные вещи могут легко привести к неопределенному поведению. Сохраняйте свой код простым, выполняя одну вещь за раз.

0

По вопросам рекламы [email protected]