(invalid lvalue in assignment) 这个错误发生在 i 运行 it.what 是什么意思?

(invalid lvalue in assignment) this error happens when i run it.what does it mean?

这是代码,编译器说第 7 行有问题。

include<stdio.h>
main()
{
char m;
 int a,b,n=0;
scanf("%c%d%d",&m,&a,&b);
m=='A' || m=='B' || m=='C' ? n=(3*a)+(5*b) : n=(5*a)+(3*b);
printf("%d\n",n);
}

改用

m=='A' || m=='B' || m=='C' ? n=(3*a)+(5*b) : ( n=(5*a)+(3*b));

否则语句看起来像

( m=='A' || m=='B' || m=='C' ? n=(3*a)+(5*b) : n)=(5*a)+(3*b);

或者你可以这样写

n = m=='A' || m=='B' || m=='C' ? (3*a)+(5*b) : (5*a)+(3*b);

C中的条件运算符定义如下

conditional-expression:
    logical-OR-expression
    logical-OR-expression ? expression : conditional-expression

由于赋值运算符的优先级较低,因此编译器会发出错误,因为赋值被排除在第三个操作数的条件运算符之外

您使用的表达式在 C++ 中有效,因为在 C++ 中运算符的定义不同

conditional-expression:
    logical-or-expression
    logical-or-expression ? expression : assignment-expression
                                         ^^^^^^^^^^^^^^^^^^^^^

没有必要使用复杂的语句来混淆所有人,包括编译器。这同样有效,而且更容易阅读:

if (m=='A' || m=='B' || m=='C')
   n=(3*a)+(5*b);
else
   n=(5*a)+(3*b);