недопустимые операнды типов 'double' и const char [3] 'в двоичный оператор' << '

0

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

недопустимые операнды типов 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;
 }
  • 0
    вам нужна скобка: cout << "(" << (x = y++) << ", " << y << ")" << endl;
Теги:
increment
decrement

2 ответа

1

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

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

См. C++ Приоритет оператора.

0

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню