此代码抛出一个左值所需的编译时错误。
#include <stdio.h>
void main()
{
int k = 8;
int m = 7;
k < m ? k++ : m = k;
printf("%d", k);
}
答案 0 :(得分:1)
三元运算符的优先级高于赋值的优先级,这就是为什么您的代码等于(k < m ? k++ : m) = k;
的原因。您的编译器说方括号中的值是不可分配的。
您想要做的是:
#include <stdio.h>
void main()
{
int k = 8;
int m = 7;
k < m ? k++ : (m = k);
printf("%d", k);
}
答案 1 :(得分:0)
问题在这里:
k < m ? k++ : m = k;
使用要分配值的构造,但您不需要。我猜你想要这样的东西:
k = (k < m) ? k+1 : m;
现在,您将根据条件k
为k < m
分配一个值
如果(k
k = k + 1
否则-> k = m