(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);
这是代码,编译器说第 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);