我完全不知道为什么我的编译器会抛出此错误: “错误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
是一个简短的,可以修改,但!=
不是修饰符,它是一个检查器。发生了什么事?
答案 0 :(得分:7)
运算符优先级决定了您的第一个子条件
input != 1 && input != 2 && input != 3 && choice = 1
被解析为
(input != 1 && input != 2 && input != 3 && choice) = 1
=
的左侧不是左值,就像你的编译器告诉你的那样。
那个奇怪的运营商组合你想说什么?
答案 1 :(得分:0)
(=)的左侧必须为l值,这意味着它必须在内存中有地址