无法理解三元运算符的行为

dco*_*r11 -1 c ternary

以下程序的输出是: 3 1 3

int main()
{
    int a = 0, b = 1, c = 3;
    *((a) ? &b : &a) = a ? b : c; // Couldn't understand expression
    printf("%d %d %d \n", a, b, c);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

三元运算符如何在此处输出此输出?

Gri*_*han 5

 *( (a) ? &b : &a) =     a ? b : c ;
     ^                   ^
     = 0                 = 0
     ==false             ==false
Run Code Online (Sandbox Code Playgroud)

所以上面的表达方式:

 *( &a) =  c ;
Run Code Online (Sandbox Code Playgroud)

那是:

     a =  c ;
Run Code Online (Sandbox Code Playgroud)

因为c = 3;,所以它给:

     a =  3 ;   
Run Code Online (Sandbox Code Playgroud)

b1c3在你的宣言(保持不变).