这是我尝试构建时收到的错误消息:
类型'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;
}
答案 0 :(得分:1)
=
的优先级低于<<
,将其更改为:
std::cout << "(" << (x = y++) << ", " << y << ")" << std::endl;
// ^ ^
答案 1 :(得分:0)
作业(=
)的移位precedence低于移位(<<
),因此您需要使用parantheses来获得您期望的含义:
cout << "(" << (x = y++) << ", " << y << ")" << endl;
^ ^
但是你不应该编写具有这样的多个副作用的代码:未指定操作数的评估顺序,这种事情很容易导致未定义的行为。保持代码简单,一次做一件事。