获取错误"左值作为赋值的左值"

EmZ*_*ark 3 c compiler-errors ternary-operator conditional-operator

我是C的新手,在编译简单代码时遇到以下问题:

#include <stdio.h>

int main()
{
    int i, a, b;
    i = 3;
    a = b = 0;

    printf("Before: ");
    printf("%d %d\n", a, b);
    i == 3 ? a = 4 : a = 10; /* Line 9 */

    printf("After: ");
    printf("%d %d\n", a, b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

给我错误:

#gcc some.c
In function ‘main’:
some.c:9: error: lvalue required as left operand of assignment
Run Code Online (Sandbox Code Playgroud)

我不明白.我究竟做错了什么?

Vla*_*cow 7

这个运营商

i==3 ? a=4 : a = 10;
Run Code Online (Sandbox Code Playgroud)

相当于

( i==3 ? a=4 : a ) = 10;
Run Code Online (Sandbox Code Playgroud)

请改用

i==3 ? a=4 : ( a = 10 );
Run Code Online (Sandbox Code Playgroud)