C 编译时错误为';所需左值';但不知道为什么
此代码抛出左值必需的编译时错误C 编译时错误为';所需左值';但不知道为什么,c,C,此代码抛出左值必需的编译时错误 #include <stdio.h> void main() { int k = 8; int m = 7; k < m ? k++ : m = k; printf("%d", k); } #包括 void main() { int k=8; int m=7; k
#include <stdio.h>
void main()
{
int k = 8;
int m = 7;
k < m ? k++ : m = k;
printf("%d", k);
}
#包括
void main()
{
int k=8;
int m=7;
k
问题在于:
k < m ? k++ : m = k;
k
对于构造,您希望指定一个值,但不希望。我猜你想要这样的东西:
k = (k < m) ? k+1 : m;
k=(k
现在,您将根据条件k
分配一个值
如果(k否则->k=m
三元运算符的优先级高于赋值,这就是为什么代码等于
(k。您的编译器说括号中的值是不可赋值的
您要做的是:
#include <stdio.h>
void main()
{
int k = 8;
int m = 7;
k < m ? k++ : (m = k);
printf("%d", k);
}
#包括
void main()
{
int k=8;
int m=7;
k
clang
表示错误:表达式对于三元运算符中的m=k
是不可赋值的。您想用k?三元运算符不是一个if
替换。是不是k=k++
UB?我不确定???更好的k+1?是的,k+1
可以。好的,谢谢。我编辑答案