类型'double'和const char [3]'到二进制'运算符<<'的无效操作数

时间:2014-02-24 01:46:16

标签: c++ increment decrement

这是我尝试构建时收到的错误消息:

  

类型'double'和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;
 }

2 个答案:

答案 0 :(得分:1)

=的优先级低于<<,将其更改为:

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

请参阅C++ Operator Precedence

答案 1 :(得分:0)

作业(=)的移位precedence低于移位(<<),因此您需要使用parantheses来获得您期望的含义:

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

但是你不应该编写具有这样的多个副作用的代码:未指定操作数的评估顺序,这种事情很容易导致未定义的行为。保持代码简单,一次做一件事。