错误C2106:'=':左操作数必须是带有`!=`C ++的l值

时间:2015-02-21 06:41:10

标签: c++

我完全不知道为什么我的编译器会抛出此错误: “错误1错误C2106:'=':左操作数必须是l值”,使用以下代码行:

while ((input != 1 && input != 2 && input != 3 && choice = 1) ||
      (input != 1 && input != 2 && input != 3 && input != 4 && input != 5 && input != 6 && choice = 1) ||
      std::cin.fail()){}

错误似乎希望input是一个简短的,可以修改,但!=不是修饰符,它是一个检查器。发生了什么事?

2 个答案:

答案 0 :(得分:7)

运算符优先级决定了您的第一个子条件

input != 1 && input != 2 && input != 3 && choice = 1

被解析为

(input != 1 && input != 2 && input != 3 && choice) = 1

=的左侧不是左值,就像你的编译器告诉你的那样。

那个奇怪的运营商组合你想说什么?

答案 1 :(得分:0)

(=)的左侧必须为l值,这意味着它必须在内存中有地址