首页 > 解决方案 > 编译时错误为“需要左值”,但不确定原因

问题描述

此代码引发左值所需的编译时错误。

#include <stdio.h>

void main()
{
    int k = 8;
    int m = 7;
    k < m ? k++ : m = k;
    printf("%d", k);
}

标签: c

解决方案


三元运算符的优先级高于赋值,这就是为什么您的代码等于(k < m ? k++ : m) = k;. 您的编译器说括号中的值是不可分配的。

你想做的是:

#include <stdio.h>

void main()
{
    int k = 8;
    int m = 7;
    k < m ? k++ : (m = k);
    printf("%d", k);
}

推荐阅读